java - 使用 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"
}
解决方案
先访问被包装的数组,然后修改第 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);
推荐阅读
- elasticsearch - 弹性搜索ignore_above设置使用
- node.js - 如何使用 express api 在 Mongoose 中获取已创建对象的返回
- azure - Web 部署任务失败。ERROR_USER_UNAUTHORIZED
- vba - 如何在 vba Outlook 中选择 IMAP acc
- rest - 如何获取通用地图作为来自 restTemplate 交换方法的响应?
- ignite-ui - Ignite ui,在哪里可以找到有关最新版本的信息
- reactjs - 如何在反应中初始化动作创建者中的firebase实例?
- facebook - facebook粉丝页面无法爬取
- javascript - 首先会发生什么:setTimeout 0 或 await Promise.resolve?
- postgresql - 每个事务的计划程序方法配置