json转换为对象 java对象数组对象_将JSON数组转换为Java类对象列表

我有一个来自WFC服务的

JSON字符串.当我尝试将

JSON数组转换为List对象时,我遇到以下错误:

".JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: java.io.StringReader@41f27f18; line: 1, column: 1]"

Java类(卡类):

public class Card {

public String ID;

public String CompanyID;

public String CompanyName;

public String FiscalCode;

public String Limit;

public String StateID;

public String CardState;

public String Deleted;

public String Sold;

public String StartDate;

public String InvoiceStartDate;

public String Quantity;

public String Value;

public String CardTypeID;

public String CardType;

public String SoldChanged;

public String DriverName;

public String VehiclePlateNumber;

public String VehicleID;

public String Discount;

public String ContractID;

public String DiscountPerMonth;

public String ProductID;

public String ProductStateID;

public String Mail;

public String WithoutLimit;

public String ContractSold;

public String ContractLimit;

public String NumberOfTransactions;

public String DriverNameOnly;

public String DriverSurnameOnly;

}

反序列化的Java代码:

strResponse = responseHandler.handleResponse(response);

if (strResponse.contains("Credit") || strResponse.contains("Debit")) {

ObjectMapper mapper = new ObjectMapper();

strResponse= strResponse.replace("\"GetCardsResult\":", "");

userCards = mapper.readValue(strResponse, mapper.getTypeFactory().constructCollectionType(List.class, Card.class));

}

JSON字符串:

{ "GetCardsResult":"[{\"ID\":3,\"CompanyID\":1155,\"CompanyName\":\"test\",\"FiscalCode\":null,\"Code\":\"1423127205\",\"Limit\":0.000,\"StateID\":1,\"CardState\":\"Activ\",\"Deleted\":false,\"Sold\":0.000,\"StartDate\":\"\/Date(1412974800000+0300)\/\",\"InvoiceStartDate\":\"\/Date(-62135596800000+0200)\/\",\"Quantity\":null,\"Value\":0.0,\"CardTypeID\":1,\"CardType\":\"Credit\",\"SoldChanged\":false,\"DriverName\":\"\",\"VehiclePlateNumber\":\"B 222 ART\",\"VehicleID\":null,\"Discount\":null,\"ContractID\":15,\"DiscountPerMonth\":null,\"ProductID\":null,\"ProductStateID\":null,\"Mail\":\"\",\"WithoutLimit\":true,\"ContractSold\":null,\"ContractLimit\":null,\"NumberOfTransactions\":null,\"DriverNameOnly\":null,\"DriverSurnameOnly\":null},{\"ID\":2881,\"CompanyID\":1155,\"CompanyName\":\"test\",\"FiscalCode\":null,\"Code\":\"test0000\",\"Limit\":125.000,\"StateID\":1,\"CardState\":\"Activ\",\"Deleted\":false,\"Sold\":132.330,\"StartDate\":\"\/Date(1436130000000+0300)\/\",\"InvoiceStartDate\":\"\/Date(-62135596800000+0200)\/\",\"Quantity\":null,\"Value\":0.0,\"CardTypeID\":1,\"CardType\":\"Credit\",\"SoldChanged\":false,\"DriverName\":\"aaa aaa\",\"VehiclePlateNumber\":\"aaa\",\"VehicleID\":null,\"Discount\":null,\"ContractID\":15,\"DiscountPerMonth\":null,\"ProductID\":null,\"ProductStateID\":null,\"Mail\":\"\",\"WithoutLimit\":true,\"ContractSold\":null,\"ContractLimit\":null,\"NumberOfTransactions\":null,\"DriverNameOnly\":null,\"DriverSurnameOnly\":null}]" }

提前致谢!

最佳答案 试试这个:

try {

JSONObject jsonObject = null;

yourJSONString.replace("\\", "");

jsonObject = new JSONObject(yourJSONString);

String newJSONString = jsonObject.get("GetCardsResult").toString();

JSONArray jsonMainArr = new JSONArray(newJSONString);

//now just loop the json Array

for (int i = 0; i < jsonMainArr.length(); ++i) {

JSONObject rec = jsonMainArr.getJSONObject(i);

card.set_id(rec.get("ID").toString());

//....

}

} catch (JSONException e) {

e.printStackTrace();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值