gpt4 book ai didi

java - 使用 Jackson 库编辑 JsonArray

转载 作者:行者123 更新时间:2023-12-02 11:25:29 24 4
gpt4 key购买 nike

我的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 来实现这一点,那么还有其他库可以解决这个问题吗?
我尝试了以下链接
Modify JsonNode of unknown JSON dynamically in JavaHow to retrieve and update json array element without traversing entire json 但并没有取得多大成果

最佳答案

如果我没记错的话,您想要修改 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);
}

关于java - 使用 Jackson 库编辑 JsonArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49670695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com