使用Gson将JSON反序列化为对象时出现以下异常:
com.google.gson.JsonParseException:JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@588722d6无法反序列化json对象[{“time”:1378911600000,“total”:0},{“time”:1378912500000 ,“总数”:0},{“时间”:1378913400000,“总数”:2,“总和”:130000,“avgLen”:65000.0}]给出类型com.google.gson.ParameterizedTypeImpl@490ca2fa
应该代表JSON的类是:
public class Api{
private List<ApiData> avgEngLength;
public Api() {
}
}
public class ApiData{
private Long time;
private Long total;
private Long sum;
private Double avgLen;
public ApiData(Long time, Long total, Long sum, Double avgLen) {
this.time = time;
this.total= total;
this.sum= sum;
this.avgLen= avgLen;
}
}
反序列化的代码是:
String json = "{\"avgEngLength\":[{\"time\":1378905300000,\"total\":0},{\"time\":1378906200000,\"total\":2,\"sum\":130000,\"avgLen\":65000.0}]}";
Gson gson = new GsonBuilder().create();
return gson.fromJson(json, Api.class);
奇怪的是它适用于某些机器,而不适用于其他机器。 有什么想法吗?
答案 0 :(得分:0)
我用这个尝试了你的例子:
public static void main(String[] args) {
String s = "{\"avgEngLength\":[{\"time\":1378905300000,\"total\":0},{\"time\":1378906200000,\"total\":2,\"sum\":130000,\"avgLen\":65000.0}]}";
Gson gson = new GsonBuilder().create();
Api a = gson.fromJson(s, Api.class);
System.out.println(a);
}
并且它有效(请注意您的示例中的字符串没有转义引号)。
Api [avgEngLength=[ApiData [time=1378905300000, total=0, sum=null, avgLen=null], ApiData [time=1378906200000, total=2, sum=130000, avgLen=65000.0]]]
所以我最好猜测你的团队正在使用不同版本的库。我正在使用Gson 2.2.4并检查了源代码:库中没有错误字符串。