現在、Jacksonライブラリを使用して、アノテーションを使用してjsonからpojosを非整列化しています。jsonとジャクソンとのマップを平らにする
次のように私は非整列化したいJSONツリーは次のとおりです。
{
"key1":"value1",
"key2":"value2",
"key3":{
"key31":{
"key311":"value311",
"key312":"value312",
"key313":"value313"
},
"key32":"value32"
},
"key4":"value4",
"key5":"value5",
"key6":{
"key61":"value61"
}
}
私は事前にJSONの構造を知らないと、完全に内容はと等価になる地図にそれを平らにしたいと思います:注釈@JsonAnySetter
を使用して
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" は無視されるべきであることに注意してください)
、私はfunctiを作成することができますすべての最上位レベルのアトムをマップに取り込みますが、このメソッドは子を持つノードもキャッチします(値がMapの場合)。
その時点から、私はもちろん子どもの上に簡単な再帰を書くことができますが、私はこの部分をライブラリからの施設の使用によって自動的に(エレガントな方法で)処理したいと思います(注釈、設定、など)、自分で再帰を書く必要はありません。
注:異なるレベルキーには名前の衝突がないものとします。