解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题
Posted 我想月薪过万
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题相关的知识,希望对你有一定的参考价值。
问题展示
中文解释 :就是说 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)
以上是关于解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题的主要内容,如果未能解决你的问题,请参考以下文章
解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题