2013-09-12 5 views
1

У меня есть следующее исключение при десериализации JSON объекта с помощью Gson:Ошибка десериализации объекта с помощью списка Gson

com.google.gson.JsonParseException: JsonDeserializer com.google.gson.DefaultTypeAdapters $ CollectionTypeAdapter @ 588722d6 не удалось десериализовать json-объект [{«время»: 1378911600000, «total»: 0}, {«time»: 1378912500000, «total»: 0}, {«time»: 1378913400000, «total»: 2, "сумма": 130000, "avgLen": 65000,0}], учитывая тип [email protected]

класс, который должен представлять 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

Какую версию Gson вы используете? вы предоставляете какое-то индивидуальное поведение вашему строителю, о котором не сообщается в примере? – giampaolo

ответ

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, и я проверил исходный код: эта строка ошибки отсутствует в библиотеке.

+0

Как я уже сказал, он работает на некоторых машинах (я думаю, только на окнах), а не на других. – zohar

+0

У вас было время проверить версию библиотеки на компьютерах, которые бросают исключение? – giampaolo

Смежные вопросы