[alibaba/fastjson]反序列化类型为ArrayList的字段时,如果value=null,则会报错

2024-08-30 439 views
9

使用的是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 辛苦

回答

5

mark

2

请问 1.1.71.android 是否还有问题?

4

请问 1.1.71.android 是否还有问题?

1.1.71还有这个问题。

1

这个问题,还有后续跟进么 @wenshao @jintianfan

9

同样遇到这个问题。

4

有解决吗?

8

没人跟进吗

2

mark

7

mark

3

请问这个问题有解决方案吗? @wenshao