2010-04-25 1 views
5

Ich habe Probleme mit GSON, hauptsächlich Deserialisierung von JSON zu einem POJO.Parsen von JSON mit GSON

Ich habe folgende JSON:

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

Mit dem folgenden POJO des ...

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; 
    } 
} 

... und ich bin Deserialisieren mit dem folgenden Code, wo json Eingang der json ist über

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

Allerdings kann ich die Liste der Ereignisse nicht richtig ausfüllen. Der Titel und die ID sind immer null. Ich bin mir sicher, dass ich etwas vermisse, aber ich bin mir nicht sicher was. Irgendeine Idee?

Danke

Antwort

4

OK, das habe ich herausgefunden. Ich bezeuge dies zu einem langen Tag der Codierung mit wenig Schlaf in der Nacht zuvor!

Die Datenstruktur "events" enthielt mehrere "events", die jeweils den Typ "event" enthalten. Ich musste das EventSearchEvent in eine neue Klasse namens EventContainer verschieben. Dieser Ereigniscontainer enthielt ein Feld "event". Dieses "Event" war das "EventSearchEvent". Deshalb, als GSON über das JSON-Array iterierte, sah es den Container (der vom Typ "events" ist) und dann innerhalb dieses Objekts nach einem "event" -Mitglied gesucht. Als es schließlich fand, dass es die Identifikation und den Titel passend geladen hat.

Kurz gesagt: Ich hatte meine Objekthierarchie nicht korrekt gebaut.

+0

Ich habe ein ähnliches Problem zu dieser Frage hier http://StackOverflow.com/Questions/9799549/Java-android-Java-Lang-OutofMemoryerror-while-building-AJsonObject Schau dir meinen letzten Kommentar in der Antwort von 'LouieLouie'. – jmishra