Как изменить JsonNode в Java?
Мне нужно изменить значение атрибута JSON в Java, я могу получить значение правильно, но я не смог изменить 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
}
}
}
Каков наилучший способ сделать это?
Ответы
Ответ 1
JsonNode
является неизменным и предназначен для операции синтаксического анализа. Однако его можно включить в ObjectNode
(и ArrayNode
), которые допускают мутации:
((ObjectNode)jsonNode).put("value", "NO");
Для массива вы можете использовать:
((ObjectNode)jsonNode).putArray("arrayName").add(object.getValue());
Ответ 2
Вам нужно получить объект типа ObjectNode
, чтобы установить значения.
Взгляните на this
Ответ 3
Я думаю, что вы можете просто использовать ObjectNode и использовать метод put
. Как этот
ObjectNode o = (ObjectNode) jsonNode;
o.put("value", "NO");