使用GSON解析JSON

5
我在使用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);   

然而,我无法正确获取事件列表。标题和id始终为空。我相信我漏掉了什么,但不确定是什么。有什么想法吗? 谢谢。
1个回答

4

好的,我解决了这个问题。我把这归因于一天中编码时间过长以及前一晚睡眠不足!

"events"数据结构包含多个"events",每个"event"都包含一个"event"类型。我必须将EventSearchEvent移动到一个名为EventContainer的新类下。这个事件容器包含一个字段"event",这个"event"就是"EventSearchEvent"。因此,当GSON迭代JSON数组时,它看到了容器(类型为"events"),然后在该对象内部查找"event"成员。最终找到之后,它适当地加载了id和title。

简而言之:我的对象层次结构构建得不正确。


我在这个问题上有类似的问题https://dev59.com/vGHVa4cB1Zd3GeqPqMde 看一下LouieLouie回答中我最后发表的评论。 - jmishra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接