解决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的问题的主要内容,如果未能解决你的问题,请参考以下文章

03 FastJson 解决循环引用

如何解决fastjson把对象转化成json避免$ref

FastJSON 首字母小写问题解决

解决FastJson com.alibaba.fastjson.JSONObject cannot be cast to的问题

修改Feign数据解析,由jackson改为fastjson,同时解决fastjson中Content-Type问题

httpclient.jar和fastjson.jar发生冲突了,怎么解决?两个包都想要