尝试将 JSON 字符串映射到 java 类,但它不起作用。使用 jackson 库,这是我的代码。 输入json:
{
"code":"1",
"message":"1",
"result":[
{
"serviceid":"13",
"servicename":"service1",
"price":"78000",
"amount":"2048"
},
{
"serviceid":"14",
"servicename":"service2",
"price":"118000",
"amount":"3072"
}
]
}
Java 类:
public class serviceList
{
public int serviceid;
public String servicename;
public double price;
public int amount;
}
public class serviceList_result
{
public String code;
public String message;
public ArrayList<serviceList> result;
public serviceList_result()
{
result = new ArrayList<serviceList>();
}
}
我正在使用此代码进行映射
serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class));
错误:
Can not deserialize instance of java.util.ArrayList out of START_OBJECT
我的代码有什么问题吗?
最佳答案
您的代码中不需要这样做:
serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class));
这样,您就表示您想要反序列化集合,即 [ ... ]
。
相反,只需这样做:
serviceList_result srv= mapper.readValue(json, serviceList_result.class);
jackson 库将弄清楚如何从类定义中创建 serviceList_result
对象。
关于java - 如何使用 Jackson 将 json 列表反序列化为 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513390/