Android - обработка неверных данных, возвращаемых из API - десериализация JSON с использованием GSON - PullRequest
0 голосов
/ 12 октября 2011

У меня проблема с возвратом некоторого JSON из API, где данные не в ожидаемом формате.В документации по API говорится, что элемент «ShowEpisodes» является Array [], как это имеет место во втором элементе ниже.Но, как вы видите в первом случае, если элемент «ShowEpisodes» не содержит никаких элементов, он возвращается в виде пустой строки.

Есть ли способ, которым я могу решить эту проблему?Я связался со службой поддержки API, чтобы выяснить, почему возвращается пустая строка, но пока не получил ответа, а пока пытаюсь найти обходной путь.

Упрощенный JSON изAPI:

ShowSeasons: [
    {
        ShowEpisodes: ""
    },
    {
        ShowEpisodes: { … }
    }
]

Объекты класса:

public static class ShowSeason implements Serializable {
    private static final long serialVersionUID = 1L;

    public ShowEpisodeInfo ShowEpisodes;
}

public static class ShowEpisodeInfo implements Serializable {
    private static final long serialVersionUID = 2L;

    public List<SeasonProgramDetails> Program;
}

Трассировка стека:

com.google.gson.JsonParseException: Expecting object found: ""
    at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:99)
    at com.google.gson.ObjectNavigator.navigateClassFields(ObjectNavigator.java:158)
    at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:131)
    at com.google.gson.JsonDeserializationVisitor.visitChild(JsonDeserializationVisitor.java:107)
    at com.google.gson.JsonDeserializationVisitor.visitChildAsObject(JsonDeserializationVisitor.java:95)
    at com.google.gson.JsonObjectDeserializationVisitor.visitObjectField(JsonObjectDeserializationVisitor.java:61)
    at com.google.gson.ObjectNavigator.navigateClassFields(ObjectNavigator.java:164)
    at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:131)
    ........

Кто-нибудь знает способ обработки как пустой строки, так и массива объекта, когда API возвращает неверные данные?Или, возможно, способ подавления исключения, чтобы я просто отбрасывал неверные данные

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