1
[{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 正确创建的

4

3 回答 3

3

尽管您的最终解决方案应该可以正常工作,但您也可以List像在第一种方法中一样使用对象。因为,顺便说一句,在您的最终解决方案中,您正在创建一个List您没有使用的!

你只需要使用 a 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...
于 2013-10-04T09:20:37.867 回答
1

我与 ArrayList.Class 一起使用,但它在我的应用程序中工作正常。

于 2013-10-04T06:59:13.297 回答
0

问题更正了我错误地使用对象数组列表而不是对象数组

        Gson gson = new Gson();
        List<SerialDetails> serialDetails =new ArrayList<SerialDetails>();  
        SerialDetails[] serialDetailsRecords = gson.fromJson(sendJsonDataList, SerialDetails[].class);
        for (SerialDetails item: serialDetailsRecords) {
             item.toString();
        }

现在它的作品完美

谢谢大家

于 2013-10-04T06:22:17.720 回答