我有一个json。让我们说:
{
"id":"101",
"name":"Saurabh",
"age":"28"
}
现在,我想在 id 属性之后添加“rollNo”:“52”。如何在 java 中使用 jsonNode 来做到这一点?
实际上我正在使用 jsonNode 解析这个对象,所以没有 pojo 映射我只是想要一种通过创建 pojo 映射在任何地方添加属性的方法。
JSON 属性未排序。您不能决定将一个“紧随其后”。它们将按照它们的顺序排列。
嗯,就是这个意思。如果您使用 Jackson 流式 JSON Writer,则可以使用它按您喜欢的顺序编写属性。但这只是为了做一些你一开始就不想做的事情。当您想要按特定顺序排列的东西时,请将它们放入数组中。
JsonNode 是immutable
并且旨在用于解析操作。但是,它可以转换为 ObjectNode 并增加价值((ObjectNode)jsonNode).put("rollNo", "52");
我实际上找到了一种方法。
首先创建一个新的空白节点,然后遍历原始节点并检查您的条件并相应地放置新节点。这可能只需要一小部分时间,但会解决这些问题。
这是代码
ObjectNode newChildNode = new ObjectNode(JsonNodeFactory.instance);
Iterator<Map.Entry<String, JsonNode>> fields = childNode.fields();
while(fields.hasNext()){
Map.Entry<String, JsonNode> entry = fields.next();
newChildNode.putPOJO(entry.getKey(), entry.getValue());
if("id".equals(entry.getKey())){
newChildNode.put("rollNo", "52");
}
}
//This will convert the POJO Node again to JSON node
ObjectMapper mapper = new ObjectMapper();
newChildNode= mapper.readTree(newChildNode.toString());