2012-04-24 39 views
12

Tôi muốn deserialize một mảng JSON bằng cách sử dụng Gson. Tôi đã cố gắng làm điều đó nhưng tôi không thể làm được.Làm thế nào để deserialize một mảng JSON bằng cách sử dụng Gson

Các JSON mảng:

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

tôi nhận được mảng JSON từ một kịch bản 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

Có hướng nhiều hơn bạn có thể cung cấp về vấn đề này? Đầu vào là gì, bạn lấy nó từ đâu, bạn đang cố gì? – Michael

+0

Các Proplem là khi tôi cố gắng để có được một mảng Objcet [] usin gson.fromJson() Tôi nhận được một vule null, tôi nhận được mảng JSON này từ một trang PHP: –

Trả lời

36

Để deserialize một JSONArray bạn cần phải sử dụng TypeToken. Bạn có thể đọc thêm về nó từ GSON user guide. mã ví dụ:

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

Nếu bạn có một JSONArray sau đó bạn có thể sử dụng

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

danh sách asd ở đây là gì? – Seenu69

+0

Bất cứ ai có thể giúp tôi với điều này - http://stackoverflow.com/questions/27666558/deserializing-json-array-using-gson? –

+1

FYI, cho Loại là java.lang.reflect.Type. Hiện có hàng triệu lớp học để tự động hoàn thành có thể gây nhầm lẫn. – Nativ

Các vấn đề liên quan