码迷,mamicode.com
首页 > Web开发 > 详细

Fastjson对范型处理的bug

时间:2017-09-26 13:01:45      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:img   es2017   有趣   分享   boolean   nbsp   arraylist   idt   阿里   

由于没有写博客的习惯,一直坚持不下来。

但是这次在重构中遇到这个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

标签:img   es2017   有趣   分享   boolean   nbsp   arraylist   idt   阿里   

原文地址:http://www.cnblogs.com/fastLearn/p/7595860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!