Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何迭代对象数组[Gson反序列化]?_Java_Json_Loops_Gson - Fatal编程技术网

Java 如何迭代对象数组[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

上面显示了我调试时的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, 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。