[英]how to add attribute at any place in json using JsonObject in java
我有一个json。 可以说:
{
"id":"101",
"name":"Saurabh",
"age":"28"
}
现在,我想在id属性后面添加“ rollNo”:“ 52”。 我该如何在Java中使用jsonNode?
实际上,我是使用jsonNode解析此对象的,所以没有pojo映射,我只想一种通过创建pojo映射将属性添加到任何地方的方法。
JsonNode是immutable
,旨在用于解析操作。 但是,可以将其((ObjectNode)jsonNode).put("rollNo", "52");
转换为ObjectNode并添加值((ObjectNode)jsonNode).put("rollNo", "52");
JSON属性未排序。 您不能决定将一个“紧随”另一个。 他们将保持秩序。
好吧,这就是它的意思。 如果您使用Jackson流JSON编写器,则可以使用它以您喜欢的顺序编写属性。 但这只是为了完成您最初不想做的事情而已。 当您需要按特定顺序排列内容时,请将它们放入数组中。
我实际上找到了一种方法。
首先创建一个新的空白节点,然后遍历原始节点并检查条件并相应地放置新节点。 这可能只花费一小部分时间,但可以解决此类问题。
这是代码
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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.