0

我有一个json。让我们说:

{
 "id":"101",
 "name":"Saurabh",
 "age":"28"
}

现在,我想在 id 属性之后添加“rollNo”:“52”。如何在 java 中使用 jsonNode 来做到这一点?

实际上我正在使用 jsonNode 解析这个对象,所以没有 pojo 映射我只是想要一种通过创建 pojo 映射在任何地方添加属性的方法。

4

3 回答 3

0

JSON 属性未排序。您不能决定将一个“紧随其后”。它们将按照它们的顺序排列。

嗯,就是这个意思。如果您使用 Jackson 流式 JSON Writer,则可以使用它按您喜欢的顺序编写属性。但这只是为了做一些你一开始就不想做的事情。当您想要按特定顺序排列的东西时,请将它们放入数组中。

于 2018-06-27T11:37:51.330 回答
0

JsonNode 是immutable并且旨在用于解析操作。但是,它可以转换为 ObjectNode 并增加价值((ObjectNode)jsonNode).put("rollNo", "52");

于 2018-06-27T11:28:39.630 回答
0

我实际上找到了一种方法。

首先创建一个新的空白节点,然后遍历原始节点并检查您的条件并相应地放置新节点。这可能只需要一小部分时间,但会解决这些问题。

这是代码

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());
于 2018-07-10T10:48:03.267 回答