如何修改Java中的JsonNode?

我需要在Java中更改JSON属性的值,我可以正确地获取值,但是我无法修改JSON。

这里是下面的代码

JsonNode blablas = mapper.readTree(parser).get("blablas"); for (JsonNode jsonNode : blablas) { String elementId = jsonNode.get("element").asText(); String value = jsonNode.get("value").asText(); if (StringUtils.equalsIgnoreCase(elementId, "blabla")) { if(value != null && value.equals("YES")){ // I need to change the node to NO then save it into the JSON } } } 

做这个的最好方式是什么?

JsonNode是不可变的,用于parsing操作。 但是,它可以投射到允许突变的ObjectNode (和ArrayNode )中:

 ((ObjectNode)jsonNode).put("value", "NO"); 

对于一个数组,你可以使用:

 ((ObjectNode)jsonNode).putArray("arrayName").add(object.ge‌​tValue()); 

您需要获取ObjectNodetypes对象才能设置值。 看看这个

我认为你可以投到ObjectNode并使用put方法。 喜欢这个

ObjectNode o = (ObjectNode) jsonNode; o.put("value", "NO");