繁体   English   中英

Java Gson解析没有正确反序列化

[英]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.

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