Парсинг JSON с GSON

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

У меня есть следующий JSON:

{
    "events": 
    [
        {
            "event": 
            {
                "id": 628374485, 
                "title": "Developing for the Windows Phone"
            }
        },
        {
            "event": 
            {
                "id": 765432, 
                "title": "Film Makers Meeting"
            }
        }
    ]
}

Со следующим POJO...

public class EventSearchResult {

    private List<EventSearchEvent> events; 

    public List<EventSearchEvent> getEvents() {
        return events;
    }

}
public class EventSearchEvent {

    private int id; 
    private String title;


    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }
}

... и я десериализовываю со следующим кодом, где вход json является json выше

Gson gson = new Gson();
return gson.fromJson(jsonInput, EventSearchResult.class);   

Однако я не могу заставить список событий заполнять правильно. Заголовок и идентификатор являются всегда пустыми. Я уверен, что пропускаю что-то, но я не уверен что. Какая-либо идея?

Спасибо

5
задан Donn Felker 25 April 2010 в 21:56
поделиться

1 ответ

Хорошо, я понял это. Я подтверждаю это тем, что накануне вечером провел долгий день программирования и мало спал!

Структура данных «события» содержала несколько «событий», каждое из которых содержит тип «событие». Мне пришлось переместить EventSearchEvent в новый класс под названием EventContainer. Этот контейнер событий содержит одно поле «событие». Это «событие» было «EventSearchEvent». Поэтому, когда GSON перебирал массив JSON, он видел Контейнер (который имеет тип «события»), а затем внутри этого объекта искал элемент «событие». Когда он наконец обнаружил, что правильно загрузил идентификатор и заголовок.

Вкратце: у меня неправильно построена иерархия объектов.

4
ответ дан 15 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: