2011-10-04 17 views
6

Parece que no puedo resolver esto. He visto algunas publicaciones de SO (here y here), y mi situación es un poco diferente.GSON analizando el campo JSON dinámico

No estoy seguro si tengo que registrar un nuevo TypeToken o qué. Pero mi objeto JSON se ve así:

{ 
    "id": 6, 
    "error": "0", 
    "dates": { 
     34234 : "2011-01-01" // I want to parse the date into a string. 
     87474 : "2011-08-09" // The first values are all unique. 
     .     //this can be any number of entries. 
     . 
     . 
     74857 : "2011-09-22" 
    } 
} 

he creado mis dos objetos como esto:

public class Response { 

    public Integer id; 
    public String error; 
    public DateList dates; 
} 

archivo separado:

public class DateList { 

    public List<Map<Integer, String>> dateString; 
} 

No estoy seguro de cómo tweek para hacerlo bien. La documentación no parece ayudar ... Y los otros ejemplos que he visto son analizar un objeto personalizado, no un tipo de cadena.

Gracias!

+2

No sé qué es GSON, pero 'List ' al menos falta un '>'. Además, ¿no debería ser solo un mapa y no una lista de mapas? – svens

+0

Lo siento, no copié ni pegué ese código. ¡Gracias por la ayuda! –

Respuesta

12

Lo he probado en esta forma:

JSON

{ 
    "id": 6, 
    "error": "0", 
    "dates": { 
     "34234" : "2011-01-01" 
     "87474" : "2011-08-09" 
     "74857" : "2011-09-22" 
    } 
} 

Y el Response.java

public class Response { 
    public Integer id; 
    public String error; 
    public Map<Integer, String> dates; 
} 

Al menos eso parecía funcionar fuera de la caja.

+0

¡Gracias! ¡Sabía que era algo fácil! –

+0

funcionó para mí también. Pensé que tenía que escribir un TypeAdapter personalizado o algo mágico. – squeeish