首页 > 解决方案 > 使用 JsonNode 编辑 json 对象中嵌套数组中的对象

问题描述

我试图将嵌套数组项中的对象编辑 "field2": "desc 2""field2": "xxxx"下面的 json 中:

{
  "item1": 123,
  "item2": "desc 1",
  "item3": [
    {
      "field1": "desc 1",
      "field2": "desc 2"
    }
  ]
}

我试过这个解决方案

root = objectMapper.readTree(new File(filePath))
((ObjectNode) root).put("field2", "desc xxxx");

输出是:

{
  "item1": 123,
  "item2": "desc 1",
  "item3": [
    {
      "field1": "desc 1",
      "field2": "desc 2"
    }
  ],
  "field2": "desc xxxx"
}

标签: javajsonjacksonjsonnode

解决方案


先访问被包装的数组,然后修改第 0 个元素:

JsonNode root = objectMapper.readTree(new File(filePath));
ObjectNode item3element0 = (ObjectNode) root.get("item3").get(0);
item3element0.put("field2", "desc xxxx");

...或构造一个ArrayNode,向其中添加元素,然后将其添加到根:

JsonNode root = objectMapper.readTree(new File(filePath));
ArrayNode newArr = objectMapper.createArrayNode();
ObjectNode field2Element = objectMapper.createObjectNode();
field2Element.put("field2", "desc xxxx");
newArr.add(field2Element);
root.set("item3", newArr);

推荐阅读