![](/img/trans.png)
[英]Jackson Json: how to convert array to JsonNode and ObjectNode?
[英]How to replace json node in jsonNode or ObjectNode
我有一個類似於下面的JSON
節點。 JsonNode
的結構會動態變化。
現在我想replace/update
特定鍵的值。
示例 JSON 一
{
"company": "xyz",
"employee": {
"name": "abc",
"address": {
"zipcode": "021566"
}
}
}
JSON 示例二
{
"name": "abc",
"address": {
"zipcode": "021566"
}
}
我想將郵政編碼值021566
為566258
。 我知道 key name (zipcode)
,舊的和新的郵政編碼值,但我不知道郵政編碼的路徑。 我嘗試了多種使用com.fasterxml.jackson.databind.JsonNode - put, replace
有沒有辦法在java中更新?
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 中查找子節點的值可能有更好的方法,而不是將整個子節點作為節點,替換它的一個值,然后再替換節點。 不過,這應該對你有用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.