[英]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.