Java 使用JsonNode编辑json对象中嵌套数组中的对象

Java 使用JsonNode编辑json对象中嵌套数组中的对象,java,json,jackson,jsonnode,Java,Json,Jackson,Jsonnode,我试图在下面的json中编辑嵌套数组项field2:desc 2到field2:xxxx中的对象: { "item1": 123, "item2": "desc 1", "item3": [ { "field1": "desc 1", "field2": "desc 2" } ] }

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

{
  "item1": 123,
  "item2": "desc 1",
  "item3": [
    {
      "field1": "desc 1",
      "field2": "desc 2"
    }
  ]
}
我试过这个

产出为:

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

首先访问包装的数组,然后修改第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);

首先访问包装的数组,然后修改第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);
使用ObjectMapper和JsonNode复杂json数组和对象更新json *

解决方案: 结果: 使用ObjectMapper和JsonNode复杂json数组和对象更新json *

解决方案: 结果:
我们可以在这里使用ObjectNoderoot.putArrayitem3吗?当然,如果您想在其中放入一个空的ArrayNode并通过它进行添加,这将起作用。或者,您可以从头构造ArrayNode,并以这种方式对其进行修改。可能还有其他方法。我们可以在这里使用ObjectNoderoot.putArrayitem3吗?当然,如果您想放入一个空的ArrayNode并通过它进行添加,这将起作用。或者,您可以从头构造ArrayNode,并以这种方式对其进行修改。可能还有其他一些方法可以做到这一点。您正在根节点中编辑get item3节点及其第一个对象并编辑root.getitem3.get0此工作对象节点root.getitem3.get0.putfield2,xxxx;您正在根节点get item3节点及其第一个对象中编辑,并编辑root.getitem3.get0此works ObjectNode root.getitem3.get0.putfield2,xxxx;
{"item1":123,"item2":"desc 1","item3":[{"field1":"desc 1","field2":"xxxxxxxxxxxxxx"}]}