繁体   English   中英

如何在Java中使用JsonObject在json中的任何位置添加属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM