2012-04-24 17 views
12

Quiero deserializar una matriz JSON usando Gson. Intenté hacer eso pero no pude hacerlo.Cómo deserializar una matriz JSON usando Gson

El JSON matriz:

[ 
    {"ID":1,"Title":"Lion","Description":"bla bla","ImageURL":"http:\/\/localhost\/lion.jpg"}, 
    {"ID":1,"Title":"Tiger","Description":"bla bla","ImageURL":"http:\/\/localhost\/tiger.jpg"} 
] 

tengo la matriz JSON desde un script PHP:

$array = array (
    array ('ID' => 1 , 'Title' => 'Lion' , 'Description' => 'bla bla' , 'ImageURL' => 'http:\/\/localhost\/lion.jpg') , 
    array ('ID' => 2 , 'Title' => 'Tiger' , 'Description' => 'bla bla' , 'ImageURL' => 'http:\/\/localhost\/tiger.jpg') , 
); 
echo json_encode ($array); 
+0

¿Hay más dirección que puede proporcionar sobre el problema? ¿Cuál es la entrada, de dónde la sacas, qué estás intentando? – Michael

+0

El Proplem es cuando trato de obtener una matriz Objcet [] usando gson.fromJson() Obtengo una vule nula, obtengo esta matriz JSON de una página PHP: –

Respuesta

36

deserializar un JSONArray es necesario utilizar TypeToken. Puede leer más sobre esto en GSON user guide. Código de ejemplo:

@Test 
public void JSON() { 
    Gson gson = new Gson(); 
    Type listType = new TypeToken<List<MyObject>>(){}.getType(); 
    // In this test code i just shove the JSON here as string. 
    List<Asd> asd = gson.fromJson("[{'name':\"test1\"}, {'name':\"test2\"}]", listType); 
} 

Si usted tiene un JSONArray entonces puede utilizar

... 
JSONArray jsonArray = ... 
gson.fromJson(jsonArray.toString(), listType); 
... 
+1

¿Qué es la Lista asd aquí? – Seenu69

+0

¿Alguien puede ayudarme con esto - http://stackoverflow.com/questions/27666558/deserializing-json-array-using-gson? –

+1

FYI, para Tipo es java.lang.reflect.Type. Hay millones de clases de tipos, por lo que completar automáticamente puede ser confuso. – Nativ

Cuestiones relacionadas