我想将json反序列化为
Map<String, Map<String, String>
这是我要转换的json结构。
{
"filetype": {
"cell": "value"
},
"fileType2": {
"cell2": "value2"}
}
我尝试用
Map<String, Map<String, String>
类型创建一个类,并尝试在杰克逊中使用ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)
:class MapOfMap {
Map<String, Map<String, String>> mapOfMap;
//getter and setter
}
objectMapper.readValue(
new File(this.getClass()
.getClassLoader()
.getResource("configs/sample.json").getFile()),
MapOfMap.class
)
我收到此错误:
无法识别的字段“ fileType”。
有什么办法吗?
最佳答案
您不必在地图周围编写包装类。只需告诉Mapper您想要一张地图即可:
String jsonString = "{\n" +
" \"filetype\": {\n" +
" \"cell\": \"value\"\n" +
" },\n" +
" \"fileType2\": {\n" +
" \"cell2\": \"value2\"}\n" +
" }";
Map<String, Map<String, String>> map;
ObjectMapper mapper = new ObjectMapper();
try {
map = mapper.readValue(
jsonString,
new TypeReference<Map<String, Map<String, String>>>(){}
);
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
它打印:
{filetype={cell=value}, fileType2={cell2=value2}}
,看起来像您想要的。供参考:this