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

本文介绍了在使用Fastjson进行数据解析时遇到的问题,特别是当数据格式为对象包含列表的情况。错误的解析方式是直接使用`JSON.parseObject()`,而正确的做法是先用`JSON.parseObject()`得到对象,再用`JSON.parseArray()`解析列表。总结了正确处理此类数据的方法,并提供了示例代码。

问题展示

在这里插入图片描述

中文解释 :就是说 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) 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super码王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值