[{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数组。需要迭代它并从那个
创建对象这里显示我的代码
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正确创建的
答案 0 :(得分: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...
答案 1 :(得分:1)
我使用ArrayList.Class,但它在我的应用程序中工作正常。
答案 2 :(得分: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();
}
现在它的作品很完美
感谢所有