Java 使用JackSon删除JSONArray中的特定数组
我有这样的想法:Java 使用JackSon删除JSONArray中的特定数组,java,jackson,gson,Java,Jackson,Gson,我有这样的想法: { "Person": { "Info": [{ "name":"Becky", "age": 14 } ] }, "FruitsList": { "Fruits": [ { "name": "avocado", "organic": true }, { "name": "mango", "orga
{
"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
}
]
}
}
我想删除数组FruitsList和vegetableList,甚至可能是Person数组。
像这样的
{
"Person": {
"Info": [
"name": "Becky",
"age": 14
]
},
"Fruits": [
{
"name": "avocado",
"organic": true
},
{
"name": "mango",
"organic": true
}
],
"Vegetables": [
{
"name": "brocoli",
"organic": true
},
{
"name": "lettuce",
"organic": true
}
]
}
我不太确定在JACKSON库中使用什么方法来获得正确的结果。我非常感谢你的帮助。
提前谢谢 一种简单的方法是首先从根节点移除
水果列表
和蔬菜列表
节点,然后将水果
和蔬菜
添加回根节点,如下所示:
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());
顺便说一句,正如我在OP的评论中所说,您的JSON字符串是无效的。有效的JSON字符串应该是
“Person”:{“Info”:{…},…
您的输入JSON字符串似乎无效,Info
不是JSON数组。您可以将输入读入映射
,删除键并将映射序列化回JSON