Frage

Ich habe einige Probleme mit Gson, vor allem aus JSON zu einem POJO Deserialisieren.

Ich habe folgendes JSON:

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

Mit dem folgenden POJO der ...

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 das json oben

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

Allerdings kann ich die Liste der Ereignisse nicht korrekt zu füllen. Der Titel und ID ist immer null. Ich bin sicher, ich bin etwas fehlt, aber ich bin nicht sicher, was. Irgendeine Idee?

Danke

War es hilfreich?

Lösung

OK, dachte ich, diese aus. Ich bezeuge dies zu einem langen Tag in die Nacht mit wenig Schlaf Codierung vor!

Die „Ereignisse“ Datenstruktur enthalten mehrere „Ereignisse“, die jeweils ein „Ereignis“ Typ enthalten. Ich hatte die EventSearchEvent unter einer neuen Klasse zu bewegen EventContainer genannt. Dieses Ereignis Behälter enthielt ein Feld „Ereignis“. Dieses „Ereignis“ war das „EventSearchEvent“. Daher wird, wenn die Gson JSON Array iteriert, sah es den Behälter (die vom Typ „Ereignisse“ ist), und dann im Inneren des Objekts sah es für ein „Ereignis“ Mitglied. Wenn es endlich, dass es geladen, um den ID und Titel entsprechend nach oben.

Die Kurz davon: Ich habe nicht meine Objekthierarchie korrekt aufgebaut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top