使用的是1.1.67.android版本
最近遇到一个问题。
JavaBean例举:
data class Test(var list: List<String>? = 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即可。还是说有其他的配置方式,可以屏蔽这个问题。
@wenshao 辛苦