JsonNode 是不可变的,但您可以从 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 中查找子节点的值可能比将整个子节点作为节点,替换它的一个值然后替换节点更好的方法。不过,这应该对您有用:)