2012-04-24 27 views
12

Chcę deserializować macierz JSON przy użyciu Gson. Próbowałem to zrobić, ale nie mogłem tego zrobić.Jak deserializować macierz JSON przy użyciu Gson

JSON tablicy:

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

uzyskać tablicę JSON ze skryptu 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

Czy istnieje bardziej kierunek można zapewnić o tym problemie? Co to jest wejście, skąd je bierzesz, co próbujesz? – Michael

+0

The Proplem jest, gdy próbuję uzyskać tablicę Objcet [] usin gson.fromJson() Otrzymuję zerową nalot, otrzymuję tablicę JSON ze strony PHP: –

Odpowiedz

36

deserializacji do JSONArray trzeba użyć TypeToken. Możesz przeczytać więcej na ten temat od GSON user guide. Przykładowy kod:

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

Jeśli masz JSONArray następnie można użyć

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

co to jest lista jak tutaj? – Seenu69

+0

Czy ktoś może mi pomóc z tym - http://stackoverflow.com/questions/27666558/deserializing-json-array-using-gson? –

+1

FYI, dla Type jest java.lang.reflect.Type. Istnieje milion klas typów, więc automatyczne uzupełnianie może być mylące. – Nativ

Powiązane problemy