使用 Jackson 库编辑 JsonArray

Editing JsonArray using Jackson library

我的Json是这样的

{
  "A1":"1234",
  "A2": "123",   
  "A3": "???",
  "A4": "object, may not be populated.",
  "A5": { },
  "A6": { },
  "A7":{
    "B1": ["100"],
    "B2": ["C"],
    "B3": ["O", "A"]
},
  "A8":{
      "B4":["D1"],
      "B5":["D2"],
      "B6":["D3"],
      "B7":["D4"],
      "B8":["D5"],
      "B9":["D6"],
      "B10":["123"]
    }
  "ignoreThisField": "it is useless"
}

我正在使用 Jackson 库。我想编辑比方说元素 B4,它位于 A8 内部并且是数组类型。 我试过下面的代码

    byte[] jsonData = readJson(JsonFilePath);

    // Convert json String to object

    POJOClass pojo= getValue(jsonData, POJO.class);

    objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true)
            .configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, true);

    JsonNode rootNode = objectMapper.readTree(jsonData);
    // ((ObjectNode) rootNode).put("B4", "A" + "Somedata");

但它给我的输出是

"B4":"[Somedata]"

而不是

"B4":["Somedata"]

这导致了意想不到的结果。
B4 节点包含数据列表。我们如何编辑一个数组类型的节点。 如果我们不能使用 jackson 实现这个,那么有没有其他库可以解决这个问题?
我尝试了以下链接
and How to retrieve and update json array element without traversing entire json 但并没有取得多大的成就

你没有完全使用 jackson 库。

<YOur pojo object> mypojo =objectMapper.readValue(jsonData, <yourpojo.class>);

现在您可以使用 getter setter

如果我没记错的话,您想修改 JSON 数据中存在的 B4 对象。要正确执行此操作,您应该使用以下代码。

        JsonNode node = rootNode.get("A8");
        List<String>list = new ArrayList<String>();//create a ArrayList
        list.add("Anything"); //add data to arraylist 
        ArrayNode arrayNode = ((ObjectNode)node).putArray("B4"); //add the arraydata into the JSONData
        for (String item : list) { //this loop will add the arrayelements one by one.
            arrayNode.add(item);
        }