【发布时间】:2011-10-27 01:54:43
【问题描述】:
我目前正在使用 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,我可以创建一个函数来使用所有顶级原子填充映射,但该方法还将捕获具有子节点的节点(当值为映射时)。
从那时起,我当然可以自己编写对子级的简单递归,但我希望通过使用库中的工具(注释、配置、等),而不必自己编写递归。
注意:我们假设不同级别的键中没有名称冲突。
【问题讨论】:
标签: java json deserialization jackson unmarshalling