如何解决JSONObject casting issue with FastJson from Alibaba: 类型转换难题
最编程
2024-02-23 08:29:25
...
问题展示
中文解释 :就是说 fastjson 解析不了你这个数据
数据格式
public class TempMsgEncap<T> {
private Integer channel;
private List<T> msgList;
public Integer getChannel() {
return channel;
}
public void setChannel(Integer channel) {
this.channel = channel;
}
public List<T> getMsgList() {
return msgList;
}
public void setMsgList(List<T> msgList) {
this.msgList = msgList;
}
}
一个对象 里面 包含一个 list 集合
示例数据
{"channel":0,"msgList":[{"channel":0,"created":"2021-10-09","msg":"sendmsg","msgId":"13","orderid":"30","status":1,"type":0,"uRcvId":51,"uSendId":125}]}
错误解析方法
直接使用 JSON.parseObject(String str, Class clasz)
TempMsgEncap msgEncap = JSON.parseObject(text,TempMsgEncap.class);
正确解析方法
先使用 JSON.parseObject(String str),再使用 JSON.parseArray(String str, Class clasz)
JSONObject msgEncap = JSON.parseObject(text);
List<Record> msgList = JSON.parseArray(msgEncap.getString("msgList"), Record.class);
总结
- 如果你的数据格式中仅仅只是一个对象,那么可以直接使用 JSON.parseObject(String str, Class clasz)
- 如果你的数据格式中 是 对象 + list ,那么的先使用 JSON.parseObject(String str),再使用 JSON.parseArray(String str, Class clasz)