簡體   English   中英

用Jackson將JSON展平為地圖

[英]Flattening of json to a map with Jackson

我目前正在使用Jackson庫使用注釋將json解組到pojos。

我想解組的json樹如下:

{
    "key1":"value1",
    "key2":"value2",
    "key3":{
        "key31":{
            "key311":"value311",
            "key312":"value312",
            "key313":"value313"
        },
        "key32":"value32"
    },
    "key4":"value4",
    "key5":"value5",
    "key6":{
        "key61":"value61"
    }
}

我事先不知道json結構,想將其完全展平為Map,其內容等同於:

Map<String, Object> outputMap = new HashMap<String, Object>();
outputMap.put("key1", "value1");
outputMap.put("key2", "value2");
outputMap.put("key311", "value311");
outputMap.put("key312", "value312");
outputMap.put("key313", "value313");
outputMap.put("key32", "value32");
outputMap.put("key4", "value4");
outputMap.put("key5", "value5");
outputMap.put("key61", "value61");

(請注意,應忽略鍵“ key3”,“ key31”和“ key6”)

使用注解@JsonAnySetter ,我可以創建一個函數來用所有頂級原子填充地圖,但是該方法還將捕獲具有子節點的節點(當值是Map時)。

從這一點來看,我當然可以為自己編寫關於子代的簡單遞歸,但是我希望通過使用庫中的功能(注釋,配置等)自動(以一種優雅的方式)處理這一部分。 ,而不必自己編寫遞歸。

注意:我們假設不同級別的鍵中沒有名稱沖突。

我不知道有基於注釋的機制來執行此操作,因為可能適用的@JsonUnwrapped僅適用於POJO,不適用於Maps。 我想您可以提出一個增強請求,要求將@JsonUnwrapped擴展為還處理Map情況,盡管這似乎僅適用於序列化(不確定如何反序列化)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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