我有List<List<Integer>>
有价值的
[[537316070],[306297332],[319303159],[538639811],[528406093],[166705854],[124574525],[967403337],[569514785],[304831454],[219384921],[308948513],[355538394],[297996417]]
用Gson序列化后。
当我使用
反序列化它时List<List<Integer>> data = (List<List<Integer>>) GsonParser.gson.fromJson(datastr, List.class);
我正在
[[5.3731607E8], [3.06297332E8], [3.19303159E8], [5.38639811E8], [5.28406093E8], [1.66705854E8], [1.24574525E8], [9.67403337E8], [5.69514785E8], [3.04831454E8], [2.19384921E8], [3.08948513E8], [3.55538394E8], [2.97996417E8]]
有谁知道什么是错的?
由于
答案 0 :(得分:2)
Gson
会将任何JSON号解析为double
。这种情况发生在ObjectTypeAdapter#read(JsonReader)
方法中:
...
case NUMBER:
return in.nextDouble();
...
执行以下操作
List<List<Integer>> data = GsonParser.gson.fromJson(json, new TypeToken<List<List<Integer>>>() {}.getType());
将它们作为Integer
个实例。
TypeToken
是获取实际通用参数类型的Java hack。 javadoc州
构造一个新类型的文字。从类型派生表示类 参数。
客户端创建一个空的匿名子类。这样做会嵌入类型 我们可以在匿名类的类型层次结构中使用参数 尽管擦除,但在运行时重新构建它。