【发布时间】:2014-10-21 05:11:38
【问题描述】:
例如我的 JSON 文件如下所示;
{
"Test1": {
"A": {},
"B": "1",
"C": "2",
"D": "3"
},
"Test2": {
"A": {},
"B": "4",
"C": "5",
"D": "6"
},
"Test3": {
"A": {},
"B": "7",
"C": "8",
"D": "9"
},
"Test4": {
"A": {},
"B": "10",
"C": "11",
"D": "12"
}
...
...
}
如果文件只包含几条记录,这会很简单,但在我的情况下,我要处理数千条记录。对于更简单的版本,我使用了 gson 库,但不确定如何将每个记录具有唯一名称的 JSON 文件加载到 Java 中。
***************更新************************************
我现在设法读取原始数据并映射数据。但是,还有一个小问题。
这是我用来映射的代码
ObjectMapper mapper = new ObjectMapper();
File jsonFile = new File(jsonFilePath);
Map<String, Object> mapObject = mapper.readValue(jsonFile,
new TypeReference<Map<String, Object>>() {
});
System.out.println(mapObject.get("Test1"));
我得到了低于结果,这很好。但是,不确定如何获取地图“值”中的数据。
{A={}, B=1, C=2, D=3}
我尝试在下面重新映射,但它按预期失败,因为键不再被双引号括起来(见上文)!
Map<String, Object> nestedObject = mapper.readValue(
mapObject.get("Test1").toString(),
new TypeReference<Map<String, Object>>() {
});
【问题讨论】:
-
原始阅读。将其作为地图阅读。然后你会有一个字符串到对象的映射。
-
@Dan,谢谢你的建议!
-
@DanTemple 我已经更新了问题,请看看您是否可以提供帮助。欢呼
-
“我的结果低于”——不,你没有。 "System.out.println(mapObject.get("Test1");" 不会编译。
-
@specializt,感谢您的指出!我在这里重新输入了代码,因此我错过了“)”。除了那个例外,它确实打印了如上所示的结果!