Reputation: 81
I have something like this:
{
"Person": {
"Info": [{
"name":"Becky",
"age": 14
}
]
},
"FruitsList": {
"Fruits": [
{
"name": "avocado",
"organic": true
},
{
"name": "mango",
"organic": true
}
]
},
"VegetablesList": {
"Vegetables": [
{
"name": "brocoli",
"organic": true
},
{
"name": "lettuce",
"organic": true
}
]
}
}
I want to remove the array FruitsList and the VegetablesList or perhaps even Person array. Something like this.
{
"Person": {
"Info": [
"name": "Becky",
"age": 14
]
},
"Fruits": [
{
"name": "avocado",
"organic": true
},
{
"name": "mango",
"organic": true
}
],
"Vegetables": [
{
"name": "brocoli",
"organic": true
},
{
"name": "lettuce",
"organic": true
}
]
}
I am not quite sure what methods to use with in JACKSON libraries to get the right result. I would much appreciate your help. Thanks in advance.
Upvotes: 3
Views: 54
Reputation: 4009
A simple way is to remove FruitsList
and VegetablesList
nodes from root node first, and add Fruits
and Vegetables
back to it as follows:
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonStr);
JsonNode personNode = rootNode.get("Person");
JsonNode fruitsListNode = rootNode.get("FruitsList");
JsonNode vegetablesList = rootNode.get("VegetablesList");
((ObjectNode) rootNode).remove("FruitsList");
((ObjectNode) rootNode).remove("VegetablesList");
((ObjectNode) rootNode).put("Fruits", fruitsListNode.get("Fruits"));
((ObjectNode) rootNode).put("Vegetables", vegetablesList.get("Vegetables"));
System.out.println(rootNode.toString());
BTW, as I said in OP's comment, your JSON string is invalid. A valid one should be "Person": {"Info": {...}},...
.
Upvotes: 1