2013-10-04 34 views
1
[{bulkNo=91200256, cardType=CDMA_PP, denomination=300, endSerial=6048233, epfId=2254, nextSerialValue=6048226, startSerial=6048225}, {bulkNo=12050021, cardType=CDMA_PP, denomination=200, endSerial=6057151, epfId=2254, nextSerialValue=6057131, startSerial=6057131}, {bulkNo=12100005, cardType=CDMA_PP, denomination=100, endSerial=6003841, epfId=2254, nextSerialValue=6003842, startSerial=6003841}] 

顯示了我GSON陣列時,我debug.ne​​ed迭代它並創建從該如何迭代對象數組[Gson反序列化]?上述

此處對象表示我的代碼

 Gson gson = new Gson(); 
     List<SerialDetails> serialDetails =new ArrayList<SerialDetails>(); 
     serialDetails = gson.fromJson(sendJsonDataList, ArrayList.class); 
     for(int i = 0 ; i < serialDetails.size() ; i++){ 
      SerialDetails item = (SerialDetails) serialDetails.get(i);//ERROR COMES IN HERE 
      System.out.println(item); 
     } 

和這裏示出了我的錯誤

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to mainService.SerialDetails 
    at mainService.Sales.sendJsonDataList(Sales.java:677) 
    at mainService.TSR_WEB_SERVICE.sendJsonDataList(TSR_WEB_SERVICE.java:277) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 

請幫我解決這個問題。我的bean類正確創建了getter和setter

回答

3

雖然您的最終解決方案應該可以正常工作,但您也可以使用List對象,如同第一種方法。因爲,順便說一下,在您的最終解決方案中,您正在創建一個您沒有使用的List

你只需要使用一個TypeToken,因爲List.class不工作,你可能會想到,你不能做List<SerialDetails>.class ...

所以,你需要這樣的:

Type listType = new TypeToken<List<SerialDetails>>() {}.getType(); 
List<SerialDetails> serialDetails = new Gson().fromJson(sendJsonDataList, listType); 
//Now you can iterate over your List... 
+0

適合我的情況。謝謝!!!! –

0

問題糾正 我正在錯誤地使用對象的ArrayList而不是爲objectarray

 Gson gson = new Gson(); 
     List<SerialDetails> serialDetails =new ArrayList<SerialDetails>(); 
     SerialDetails[] serialDetailsRecords = gson.fromJson(sendJsonDataList, SerialDetails[].class); 
     for (SerialDetails item: serialDetailsRecords) { 
      item.toString(); 
     } 
現在

其作品完美

感謝所有

+0

請,因爲你解決了,將你的問題標記爲答案,不要忘記檢查@MikO的建議。 – giampaolo

1

我在應用與ArrayList.Class但其工作正常使用。

+0

親愛的Hareesh ..我在我的Android + KSOAP/Axis2 Web服務應用程序中使用了它。它不能很好地工作。所以我改變了那樣,現在它的工作很好 –

+1

好吧,我還沒有嘗試過這在android平臺。謝謝 – Hareesh