Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用JsonObject在json中的任意位置添加属性_Java_Jsonnode - Fatal编程技术网

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

如何在java中使用JsonObject在json中的任意位置添加属性,java,jsonnode,Java,Jsonnode,我有一个json。让我们说: { "id":"101", "name":"Saurabh", "age":"28" } 现在,我想在id属性后面添加“rollNo”:“52”。 如何在java中使用jsonNode实现这一点 实际上我正在使用jsonNode解析这个对象,所以没有pojo映射 我只想通过创建pojo映射在任何地方添加属性。JsonNode是不可变的,用于解析操作。但是,它可以转换为ObjectNode并添加值((ObjectNode)jsonNode)JSON属性未排序。

我有一个json。让我们说:

{
 "id":"101",
 "name":"Saurabh",
 "age":"28"
}
现在,我想在id属性后面添加“rollNo”:“52”。 如何在java中使用jsonNode实现这一点

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

JsonNode是不可变的,用于解析操作。但是,它可以转换为ObjectNode并添加值
((ObjectNode)jsonNode)

JSON属性未排序。你不能决定把一个放在另一个之后。他们会按顺序来的


这就是它的意思。如果您使用Jackson streaming 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());
ObjectNode newChildNode=newobjectnode(JsonNodeFactory.instance);
迭代器字段=childNode.fields();
while(fields.hasNext()){
Map.Entry=fields.next();
newChildNode.putPOJO(entry.getKey(),entry.getValue());
如果(“id”.equals(entry.getKey())){
newChildNode.put(“rollNo”,“52”);
}
}
//这将再次将POJO节点转换为JSON节点
ObjectMapper mapper=新的ObjectMapper();
newChildNode=mapper.readTree(newChildNode.toString());

分享您迄今为止的尝试总是更好的。