2010-04-25 22 views
5

Tengo algunos problemas con GSON, principalmente deserializando de JSON a POJO.Analizando JSON con GSON

Tengo el siguiente JSON:

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

Con el siguiente POJO de ...

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

... y estoy deserializar con el siguiente código, donde la entrada es el JSON JSON arriba

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

Sin embargo, no puedo obtener la lista de eventos para completar correctamente. El título y la identificación son siempre nulos. Estoy seguro de que me estoy perdiendo algo, pero no estoy seguro de qué. ¿Alguna idea?

Gracias

Respuesta

4

Bien, me di cuenta de esto. ¡Atestiguo esto a un día largo de codificación con poco sueño la noche anterior!

La estructura de datos "eventos" contiene varios "eventos", cada uno de los cuales contiene un tipo de "evento". Tuve que mover EventSearchEvent en una nueva clase llamada EventContainer. Este contenedor de eventos contenía un campo "evento". Este "evento" fue el "EventSearchEvent". Por lo tanto, cuando GSON iteraba sobre la matriz JSON, veía el contenedor (que es de tipo "eventos") y luego dentro de ese objeto buscaba un miembro "evento". Cuando finalmente descubrió que cargaba correctamente la identificación y el título.

En resumen: no tenía mi jerarquía de objetos construida correctamente.

+0

Tengo un problema similar en esta pregunta aquí http://stackoverflow.com/questions/9799549/java-android-java-lang-outofmemoryerror-while-building-a-json-object Mira mi último comentario en el respuesta por 'LouieLouie'. – jmishra