2010-04-25 200 views
5

我在使用GSON時遇到了一些麻煩,主要是從JSON反序列化爲POJO。使用GSON解析JSON

我有以下的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始終爲空。我確定我錯過了一些東西,但我不確定是什麼。任何想法?

謝謝

回答

4

好的,我想通了。我證明了這一點,前一天晚上編寫一個小小的睡眠編碼!

「事件」數據結構包含多個「事件」,每個事件都包含一個「事件」類型。我不得不在一個名爲EventContainer的新類下移動EventSearchEvent。此事件容器包含一個字段「事件」。這個「事件」是「EventSearchEvent」。因此,當GSON迭代JSON數組時,它看到Container(它是「events」類型),然後在該對象內部尋找「事件」成員。當它最終發現它正確加載了標識和標題。

簡而言之:我沒有正確構建我的對象層次結構。

+0

我在這個問題上有一個類似的問題在這裏http://stackoverflow.com/questions/9799549/java-android-java-lang-outofmemoryerror-while-building-a-json-object看看我的最後一條評論LouieLouie回答。 – jmishra 2012-03-21 09:02:23