android arraylist 序列化,反序列化类型为ArrayList的字段时,如果value=null,则会报错...

使用的是1.1.67.android版本

最近遇到一个问题。

JavaBean例举:

data class Test(var list: List? = null)

给到的json为:

{ "list":null }

这时候进行反序列化就会报错,提示”set property error, list“。引起错误的信息如下:

Caused by: java.lang.NullPointerException: null receiver

at java.lang.reflect.Field.set(Native Method)

at com.alibaba.fastjson.parser.deserializer.FieldDeserializer.setValue(FieldDeserializer.java:122)

大概跟踪了下代码,发现是如果value为null,则会尝试使用反射的方式直接设置Test对象上的list为null,但是此时的Test对象并没有初始化,也是null,所以就导致了这个空指针。

而在调动初始化此字段之前,有一步是尝试初始化Test对象的代码,但是这段代码要求JavaBeanInfo含有defualtConstructor或者有factoryMethod。而这两个东西在kotlin里面都不是特别方便默认提供。因为我们一般使用data类型的类做javaBean。

如果json改为:

{ "list":[] }

则就不会出此问题。

是否可以考虑支持数组类型下的null自动识别,取值为null即可。还是说有其他的配置方式,可以屏蔽这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值