gson.fromJson - сбой десериализации - PullRequest
2 голосов
/ 07 ноября 2011

У меня проблемы с десериализацией, так как я использую одну и ту же структуру объектов для двух разных веб-ответов.В «поиске» я получаю массив объектов, а в «деталях» я получаю только один объект.

Код поиска:

InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=search&q=" + query);
Reader reader = new InputStreamReader(source);
Gson gson = new Gson();
SearchObj searchResponse = gson.fromJson(reader, SearchObj.class); 

Код детали:

InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=detail&id=" + id);

Из сервисов я получаю ответ с тем же объектом наемного TopObject -> SearchResponse -> Response , но в первом случае (Поиск) я получаю массив Response [], а во втором случае (Подробности) я получаю один Ответobject.

Очевидно, что моя десериализация завершается неудачно во втором сценарии, поскольку код ожидает массив Response вместо одного ответа.

Я понял, что не могу изменить имя объекта, как могуимя свойства с аннотацией @ SerializedName.

Есть предложения?

1 Ответ

1 голос
/ 12 ноября 2011

Использование Gson для десериализации такого JSON, который иногда является массивом, а иногда объектом, требует специальной десериализации.Эта конкретная проблема была рассмотрена в предыдущих потоках StackOverflow, таких как Анализ JSON с GSON, объект иногда содержит список, иногда содержит объект .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...