[英]How to Iterate object array [Gson deserialize]?
[{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.need迭代它并从中创建对象
这里显示我的代码
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正确创建的
虽然您的最终解决方案应该在您评论时正常工作,但您也可以像第一种方法一样使用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...
我使用ArrayList.Class,但它在我的应用程序中工作正常。
问题纠正我错误地使用对象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();
}
现在它的作品很完美
谢谢大家
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.