[英]Java Gson parse not deserializing correctly
我有一个带有值的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]]
有谁知道什么是错的?
谢谢
默认情况下, 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说
构造一个新类型的文字。 从类型参数派生表示类。
客户端创建一个空的匿名子类。 这样做会在匿名类的类型层次结构中嵌入type参数,因此我们可以在运行时重新构建它,尽管擦除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.