如何在Java中解码用GSON创建的JSON文件?
我已经用gson成功地创建了一个JSON文件,但是现在我想解析同一个文件,所以编码变得一团糟
这是我用来读取JSON文件的代码:
BufferedReader jsonFile = new BufferedReader(new FileReader("file.json"));
Map<String, List<long[]>> trafficInput = new HashMap<>();
trafficInput = gson.fromJson(jsonFile, HashMap.class);
我似乎不知道如何确保文件得到正确的解析
例如,此文件中的有效JSON代码:
{"paris":[[1485907200000,182184411,41274],[1485993600000,151646118,36697],"london":[[1485907200000,30200160,155827]}
。。。按如下方式进行分析:
{"paris":[[1.4859072E12,1.82184411E8,41274.0],[1.4859936E12,1.51646118E8,36697.0],"london":[[1.4859072E12,3.020016E7,155827.0]}
这将打乱代码的其余部分,因为long不再是long了
例如,如果我尝试打印一个值,如下所示:
System.out.println(trafficInput.get("paris").get(0)[0]);
。。。我得到这个错误:
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to [J
有什么帮助吗
# 1 楼答案
发生这种情况的原因如下:
此行指示
gson
将字符串反序列化为HashMap
,而不指定任何类型,因此gson
应用其默认转换机制(即将Number
转换为double
等)。这就是Sysout
语句导致ClassCastException
的原因,因为该元素不是array
您所需要做的就是在调用
fromJson
方法时指定一个TypeToken
,它将处理类型。e、 g:上面的代码片段不使用科学符号打印数字