繁体   English   中英

将具有多个对象的json文件读取到地图Java中

[英]Read json file with multiple objects into a map java

注意:在此处发布此内容之前,我花了很多时间试图在此处查找有关此问题的解决方案,但找不到任何解决方案。

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

您能帮我正确地映射那些文件,而无需编写过多的代码行吗?

在处理从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读取为字符串。 您可以更改实现以适应文件读取。

我建议您使用Jackson库。

这是一个mkyong教程

只需将代码更改为

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM