JsonNodes являются неизменяемыми, но вы можете найти нужное значение из JsonNode, привести оригинал к ObjectNode, заменить значение, а затем вернуть его обратно в JsonNode. Это немного странно, я знаю, но у меня это сработало.
public static void findAndReplaceJsonNode throws JsonProcessingException {
String jsonOne = "{ \"company\" : \"xyz\", \"address\" : { \"zipcode\" : \"021566\", \"state\" : \"FL\" } }";
String jsonTwo = "{ \"company\" : \"abc\", \"address\" : { \"zipcode\" : \"566258\", \"state\" : \"FL\" } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode nodeOne = mapper.readTree(jsonOne);
JsonNode nodeTwo = mapper.readTree(jsonTwo);
JsonNode findNode = nodeTwo.get("address");
ObjectNode objNode = (ObjectNode) nodeOne;
objNode.replace("address", findNode);
nodeOne = (JsonNode) objNode;
System.out.println(nodeOne);
}
Вывод:
{"company":"xyz","address":{"zipcode":"566258","state":"FL"}}
Отказ от ответственности: Хотя я регулярно выполняю некоторые JSON разбор и обработку Я, конечно, не сказал бы, что я искусен в этом или обходах дерева с ними. Скорее всего, есть лучший способ найти значение потомка в JsonNode, чем взять весь потомок в качестве узла, заменить его одно значение и затем заменить узел. Это должно работать для вас в крайнем случае, хотя:)