I need to change a JSON attribute's value in below piece of response, What is the best way to replace below imei attribute?
here is the code which i tried
String data = "{\"ctnInfo\":{\"device\":{\"devideDetails\":{\"imei\":\"1234567891011\",\"type\":\"imei\"}}},\"subscriberInfo\":{\"subscriberInfo\":{\"imei\":\"1234567891011\"}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode parentObj = mapper.readTree(data);
JsonNode subscriberInfo1 = parentObj
.get("subscriberInfo")
.get("subscriberInfo");
if (null != subscriberInfo1
&& subscriberInfo1.hasNonNull("imei")) {
String imei = subscriberInfo1.get("imei").asText();
((ObjectNode)subscriberInfo1).put("imei", "12345");
((ObjectNode)parentObj).put("subscriberInfo", subscriberInfo1);
ObjectWriter writer = mapper.writer();
String result = writer.writeValueAsString(parentObj);
System.out.println("parent Object "+result);
}
}catch (Throwable t){
t.printStackTrace();
}
here is the json response
JsonNode apiResult =
{
"ctnInfo": {
"device": {
"devideDetails": {
"imei": "1234567891011",
"type": "imei"
}
}
},
"subscriberInfo": {
"subscriberInfo": {
"imei": "1234567891011"
}
}
}
Expected response
JsonNode apiResult =
{
"ctnInfo": {
"device": {
"devideDetails": {
"imei": "ABC",
"type": "imei"
}
}
},
"subscriberInfo": {
"subscriberInfo": {
"imei": "ABC"
}
}
}
I need to change a JSON attribute's value in below piece of response, What is the best way to replace below imei attribute?
here is the code which i tried
String data = "{\"ctnInfo\":{\"device\":{\"devideDetails\":{\"imei\":\"1234567891011\",\"type\":\"imei\"}}},\"subscriberInfo\":{\"subscriberInfo\":{\"imei\":\"1234567891011\"}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode parentObj = mapper.readTree(data);
JsonNode subscriberInfo1 = parentObj
.get("subscriberInfo")
.get("subscriberInfo");
if (null != subscriberInfo1
&& subscriberInfo1.hasNonNull("imei")) {
String imei = subscriberInfo1.get("imei").asText();
((ObjectNode)subscriberInfo1).put("imei", "12345");
((ObjectNode)parentObj).put("subscriberInfo", subscriberInfo1);
ObjectWriter writer = mapper.writer();
String result = writer.writeValueAsString(parentObj);
System.out.println("parent Object "+result);
}
}catch (Throwable t){
t.printStackTrace();
}
here is the json response
JsonNode apiResult =
{
"ctnInfo": {
"device": {
"devideDetails": {
"imei": "1234567891011",
"type": "imei"
}
}
},
"subscriberInfo": {
"subscriberInfo": {
"imei": "1234567891011"
}
}
}
Expected response
JsonNode apiResult =
{
"ctnInfo": {
"device": {
"devideDetails": {
"imei": "ABC",
"type": "imei"
}
}
},
"subscriberInfo": {
"subscriberInfo": {
"imei": "ABC"
}
}
}
Share
Improve this question
edited Feb 6 at 16:08
James Z
12.3k10 gold badges27 silver badges47 bronze badges
asked Feb 6 at 8:27
KrishKrish
4,23212 gold badges67 silver badges120 bronze badges
3
- That's not valid Java code. And there's nothing related to Spring Boot in this post – knittl Commented Feb 6 at 8:55
- @knittl, I have posted json response above need to update imei attribute – Krish Commented Feb 6 at 8:57
- @knittl i updated post please check once? – Krish Commented Feb 6 at 9:34
1 Answer
Reset to default -1String newImeiValue = "ABC";
JsonNode deviceDetails=parentObj.get("ctnInfo").get("device").get("devideDetails");
if(deviceDetails.hasNonNull("imei")) { ((ObjectNode)deviceDetails).put("imei",newImeiValue);
}
same for subscriberInfo