将包含多个对象的json文件读入映射java

时间:2017-03-03 12:39:24

标签: java json

注意:在此发布此消息之前,我花了一大块时间尝试在此处寻找解决方案,但无法找到。

我有这个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>,
    ...
]

您是否可以帮助我正确映射这些文件,而无需编写太多代码?

2 个答案:

答案 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 库。

这是mkyong tutorial

只需将代码更改为

即可
Map map = mapper.readValue(new File("c:\\whatever.json"), Map.class);