繁体   English   中英

如何迭代对象数组[Gson反序列化]?

[英]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.ne​​ed迭代它并从中创建对象

这里显示我的代码

        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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM