Micro services communicate with each other using RESTful APIs. The response often is a nested Json. If we want to represent the nested json as a pure object then we need a model of the json which will result in a nested object structure. Often the nested object structure is not required; we just need to find and extract a part of an inner element in the json tree. In this post I will show you how we can traverse a Json tree structure and how we can find and extract an element from the tree.
Let's assume the json tree look like this
{
"ParentElement1": [{
"Name": "",
"Description": "",
"Id": "",
},
"BaseEmement1": [],
"BaseEmement2": [],
"BaseEmement3": [[{
"ChildEmement1": "InvalidCell"
}
]],
"BaseEmement4": [],
"BaseEmement5": 0,
"BaseEmement6": false,
"Messages": [{
"Type": 1,
"Text": "my search text"
}
]
}],
"ParentElement2": {
"Timestamp": "2020-10-27 19:13:04.8800000",
}
}
We will use Json ObjectMapper to read and traverse this json.
The code for this is shown below
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
jsonString = "<string format of the above json>";
ObjectMapper parser =new ObjectMapper();
try {
JsonNode jsonNode = parser.readTree(jsonString);
if(!JsonNode.has("ParentElement1")) {
return false;
}
JsonNode grids = jsonNode.get("ParentElement1");
for( JsonNode node: grids) {
if(node.has("Messages")) {
JsonNode messages = node.get("Messages");
String text = messages.get(0).get("Text").textValue();
if(text.contains("my search text")) {
return true;
}
}
}
return false;
} catch(Exception e) {
logger.error("Could not parse {}", e.getMessage());
}
Comentários