簡體   English   中英

如何替換jsonNode或ObjectNode中的json節點

[英]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"
  }
}

我想將郵政編碼值021566566258 我知道 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM