GSON, не анализирует информацию для объектов в списке другого списка объектов - PullRequest
0 голосов
/ 24 октября 2018

У меня проблемы с сериализацией JSON, надеюсь, вы понимаете мою проблему, так как у меня есть некоторые проблемы с ее объяснением.

Я пытаюсь сериализовать объект JSON с GSON.Все работает нормально, за исключением случаев, когда у меня есть массив объектов внутри другого массива объектов.

У меня есть класс с именем Garden, который содержит ArrayList объектов класса Season, который содержит ArrayList объектов класса Schedule.

GSON выполняет синтаксический анализ классов Garden и Season, но когдаон приходит к классу Schedule (классу внутри класса Season), который обнаруживает, что в него можно добавить элементы, поскольку он добавляет объекты, ArrayList из Schedules внутри класса Season не пуст, но атрибуты класса don 'Не могу получить какое-либо содержание, что я делаю не так?

Класс моего сада:

public class Garden implements Serializable {
    private String id;
    private float distance;
    @SerializedName("foto_principal")
    private String mainImageURL;
    ...
    @SerializedName("epocas")
    private ArrayList<Season> seasons;

Мой сезонкласс:

public class Season implements Serializable {
    @SerializedName("nome")
    private String name;
    ...
    @SerializedName("horarios")
    private ArrayList<Schedule> schedules;

Мой класс Расписание:

public class Schedule implements Serializable {
    @SerializedName("nome")
    private String name;
    ...
    @SerializedName("epoca") // todo delete after
    private int  epoca;

Частьмой JSON:

{
meta: {
limit: 1000,
next: null,
offset: 0,
previous: null,
total_count: 11
},
objects: [  <- Here each object is a Garden
{
dificuldade: "Média",
duracao_visita: 60,
epocas: [  <- ArrayList of Seasons
{
    dia_fim: 31,
    dia_inicio: 1,
    horarios: [   <- ArrayList of Schedules
        {
            dias: [
                "0",
                "1",
                "2",
                "3",
                "4"
            ],
            epoca: 1,
            hora_de_abertura: "09:00:00",
            hora_de_fecho: "09:00:00",
            nome: "aa"
        }
    ],
    id: 1,
    mes_fim: 12,
    mes_inicio: 1,
    nome: "Todo o Ano"
},
{
    dia_fim: 21,
    dia_inicio: 8,
    horarios: [
        {
            dias: [
                "5",
                "6"
            ],
            epoca: 2,
            hora_de_abertura: "09:00:00",
            hora_de_fecho: "09:00:00",
            nome: "b"
        }
    ],
    id: 2,
    mes_fim: 9,
    mes_inicio: 6,
    nome: "Verao"
}
],
especies: [ ],
latitude: 37.775318,
longitude: -25.314724,

}

GSON код:

public static ArrayList<?> parseJSON(String json, Class obj) {
    ArrayList<Object> dataList = new ArrayList<>();
    GsonBuilder builder = new GsonBuilder();
    Gson gson = builder.create();

    if (json != null) {
        JsonParser parser = new JsonParser();
        JsonObject root = parser.parse(json).getAsJsonObject();
        JsonArray elements = root.getAsJsonArray("objects");

        for (JsonElement e : elements) {
            JsonObject element = e.getAsJsonObject();
            dataList.add(gson.fromJson(element.toString(), obj));
        }
    }
    return dataList;
}

1 Ответ

0 голосов
/ 25 октября 2018

Ну, проблема решилась, вернулась на работу на следующий день, и она работала нормально.Понятия не имею, что это могло быть.Я не изменил код и не изменил какие-либо данные, поступающие из JSON, да ладно!

Редактировать: продолжить дальнейшее расследование. Я пришел к выводу, что проблема была в том, что сервер отправлял информацию необычным способом, а не в проблему.быть с приложением.

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