欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何解决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)