注意:在此发布此消息之前,我花了一大块时间尝试在此处寻找解决方案,但无法找到。
我有这个JSON文件,其中包含我想要读入地图的多个json对象,每个对象的格式为{"key1":"value1", "key2":"value2"}
,我试过
Map<String, String> map = MAPPER.readValue(fixture("fixtures/file_name.json"), new TypeReference<Map<String, String>>() {});
因为它可以将文件读入列表地图(Map<String, Map<String, List<String>>>
)的地图中。是否应该有所不同?
我的.json
文件看起来像
[
{"key1":"value1_1", "key2":"value2_1"},
{"key1":"value1_2", "key2":"value2_2"},
...
]
我还有另一个想要读入地图的json文件,看起来像
[
"key1": {
"key1_1": [
{"key1_1_1":"value1", "key1_1_2":"value2"},
...
],
...
},
"key2":<int>,
"key3":{
"key3_1":[],
...
},
...
"key_n":<string>,
...
]
您是否可以帮助我正确映射这些文件,而无需编写太多代码?
答案 0 :(得分:1)
当您处理从Strings到JsonArrays不同的嵌套对象的不同情况时,最好将地图实现为Map<String, Object>
。
遵循以下实施,
ObjectMapper mapper = new ObjectMapper();
MapType type = mapper.getTypeFactory().constructMapType(
Map.class, String.class, Object.class);
Map<String, Object> data = mapper.readValue(jsonString, type);
这里我以字符串形式阅读JSON。您也可以更改实现以适应文件读取。
答案 1 :(得分:-1)
我建议您使用 Jackson 库。
只需将代码更改为
即可Map map = mapper.readValue(new File("c:\\whatever.json"), Map.class);