Java 如何迭代对象数组[Gson反序列化]?
上面显示了我调试时的Gson数组。需要迭代它并从中创建对象 这里显示了我的代码Java 如何迭代对象数组[Gson反序列化]?,java,json,loops,gson,Java,Json,Loops,Gson,上面显示了我调试时的Gson数组。需要迭代它并从中创建对象 这里显示了我的代码 [{bulkNo=91200256, cardType=CDMA_PP, denomination=300, endSerial=6048233, epfId=2254, nextSerialValue=6048226, startSerial=6048225}, {bulkNo=12050021, cardType=CDMA_PP, denomination=200, endSerial=6057151, epfI
[{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}]
请帮助我解决这个问题。我的bean类使用getter和setter正确创建
我被错误地用ObjectArrayList代替objectarray
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)
Gson-Gson=new-Gson();
List serialDetails=new ArrayList();
SerialDetails[]serialDetailsRecords=gson.fromJson(sendJsonDataList,SerialDetails[].class);
用于(SerialDetails项目:SerialDetails记录){
item.toString();
}
现在它的作品完美
感谢您更正了所有问题
我被错误地用ObjectArrayList代替objectarray
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)
Gson-Gson=new-Gson();
List serialDetails=new ArrayList();
SerialDetails[]serialDetailsRecords=gson.fromJson(sendJsonDataList,SerialDetails[].class);
用于(SerialDetails项目:SerialDetails记录){
item.toString();
}
现在它的作品完美
感谢所有我与ArrayList.Class一起使用,但在我的应用程序中工作良好。我与ArrayList.Class一起使用,但在我的应用程序中工作良好。尽管您的最终解决方案应该如您所评论的那样工作良好,但您也可以在第一种方法中使用
列表
对象。因为,顺便说一下,在最终的解决方案中,您正在创建一个您不使用的列表
您只需要使用TypeToken
,因为List.class
不能像您预期的那样工作,您无法执行List.class
所以,你需要像这样的东西:
Gson gson = new Gson();
List<SerialDetails> serialDetails =new ArrayList<SerialDetails>();
SerialDetails[] serialDetailsRecords = gson.fromJson(sendJsonDataList, SerialDetails[].class);
for (SerialDetails item: serialDetailsRecords) {
item.toString();
}
Type listType=new-TypeToken(){}.getType();
List serialDetails=new Gson().fromJson(sendJsonDataList,listType);
//现在您可以在列表上迭代。。。
尽管您的最终解决方案应该如您所评论的那样运行良好,但您也可以像第一种方法一样使用列表
对象。因为,顺便说一下,在最终的解决方案中,您正在创建一个您不使用的列表
您只需要使用TypeToken
,因为List.class
不能像您预期的那样工作,您无法执行List.class
所以,你需要像这样的东西:
Gson gson = new Gson();
List<SerialDetails> serialDetails =new ArrayList<SerialDetails>();
SerialDetails[] serialDetailsRecords = gson.fromJson(sendJsonDataList, SerialDetails[].class);
for (SerialDetails item: serialDetailsRecords) {
item.toString();
}
Type listType=new-TypeToken(){}.getType();
List serialDetails=new Gson().fromJson(sendJsonDataList,listType);
//现在您可以在列表上迭代。。。
亲爱的Hareesh..我在我的Android+KSOAP/Axis2 Web服务应用程序中使用了它。它工作得并不完美。亲爱的Hareesh,我在我的Android+KSOAP/Axis2 Web服务应用程序中使用了它。它工作得并不完美。所以我就这样改变了,现在很好,既然你解决了,请把你的问题标记为答案,别忘了检查@MikO advice。既然你解决了,请把你的问题标记为答案,别忘了检查@MikO advice。