Java抽象类无法反序列化,JSON.parseObject()返回结果为null

  问题:JSON.parseObject()方法将String类型的JSON字符串转为某个类的对象时,发现转换后对象一直是null,后来发现对象的类是抽象类。

查阅资料后发现,json转Object是反序列化,而抽象类不能反序列化。

/**
 * 抽象类
 */
public abstract class ReturnBean<T> {
    /**
     * 状态码
     */
    private Integer code;

    /**
     * 返回信息
     */
    private String message;

    /**
     * 返回结果
     */
    private List<T> result;
}

  使用如下代码进行JSON字符串解析时,发现testJson字符串不为空,但返回值returnBean 是null:

ReturnBean<String> returnBean = JSON.parseObject(testJson, new TypeReference<ReturnBean<String>>(){});

  解决方法是去掉ReturnBean声明时的abstract关键字,或者重写一个方法继承ReturnBean。

class SubReturnBean<T> extends ReturnBean<T> {
}

TypeReference:
  在使用fastJson时,对于泛型的反序列化很多场景下都会使用到TypeReference,使用TypeReference可以明确的指定反序列化的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值