Fastjson对范型处理的bug
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fastjson对范型处理的bug相关的知识,希望对你有一定的参考价值。
由于没有写博客的习惯,一直坚持不下来。
但是这次在重构中遇到这个bug忍不住要写下来。太有趣啦。
问题是这样的:
为了方便app对返回的数据处理,空数组返回[],空对象返回null,
个人喜欢阿里,所以引入了FastJson。所有的返回值都封装成下面的Result对象返回。最后发现大部分时候data为空时返回的是null,偶尔却返回的[],对安卓端产生了影响。
@Getter
public class Result<T> implements Serializable {
private static final long serialVersionUID = -5876274825677709598L;
private int code;
private T data;
private String desc;
}
看了看源码,其中
com.alibaba.fastjson.serializer.FieldSerializer.writeValue(JSONSerializer serializer, Object propertyValue)
这个方法会把第一次的解析的Result中data属性以ArrayList类型存在中runtimeInfo中,
为了提高效率第二个booleanResult在解析时不会再重新加载data的类型,默认为第一次加载的数组类型,
最后期望返回null,但是返回的却是空数组。
以上是关于Fastjson对范型处理的bug的主要内容,如果未能解决你的问题,请参考以下文章