亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Jackson 在 JSON 中插入和刪除內部節點?

使用 Jackson 在 JSON 中插入和刪除內部節點?

largeQ 2023-07-13 14:36:46
我有一個復雜的 json 和一個鍵列表,它們代表到我想要訪問、刪除或插入的特定節點的任意長“路徑”。那可能嗎?例如對于 json{  "token": {    "d1": 3000,    "d2": [      {        "d3": "a1",        "d4": "a2"      }    ],    "d5": [      "d6",      "d7"    ],  "d8": {    "d9": true,    "d10": 10000  }}和清單['token','d2','d3']對于插入命令,結果為removeFromJson(jsonString,key_path)將會{  "token": {    "d1": 3000,    "d2": [      {        "d4": "a2"      }    ],    "d5": [      "d6",      "d7"    ],  "d8": {    "d9": true,    "d10": 10000  }}
查看完整描述

1 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

JsonNode正如托馬斯在評論中提到的那樣,我會依靠它get和remove方法。就像是:


public void remove(String json, List<String> path) {


    JsonNode root = new ObjectMapper.readTree(json);


    int lastIndex = path.size() - 1;


    for (int i = 0; i < lastIndex; i++) {

        root = root.get(path.get(i));

    }


    root = root.remove(path.get(lastIndex));


    return root;

}

您可以使用子列表或流進一步優化迭代,并且您可能希望處理路徑實際上并未通向給定 json 中的任何內容的情況。


注意:如果您需要在任意對象內的任意路徑上執行此行為,則此選項有效 -JsonNode非常適合您不知道會得到什么的情況。如果你確實知道你會得到什么(從同一個對象中刪除的總是相同的東西),那么使用映射器集將 JSON 反序列化為對象可能是更好的形式,以忽略對象中缺少但存在于中的字段JSON。


查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 307 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號