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

时间:2013-10-04 06:00:52

标签: java json loops 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}]
上面的

显示了我调试时的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正确创建的

3 个答案:

答案 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();
        }

现在它的作品很完美

感谢所有