Разбор JSON с GSON - PullRequest
       13

Разбор JSON с GSON

5 голосов
/ 26 апреля 2010

У меня проблемы с GSON, в основном десериализация из JSON в POJO.

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

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

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

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 input - это json выше

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

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

Спасибо

1 Ответ

4 голосов
/ 26 апреля 2010

ОК, я понял это.Я засвидетельствовал это долгому дню кодирования с небольшим сном накануне вечером!

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

Суть в том, что у меня не была правильно построена иерархия объектов.

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