Fastjson對範型處理的bug
阿新 • • 發佈:2017-09-26
getter per onu fastjson 這樣的 width 部分 strong 由於
由於沒有寫博客的習慣,一直堅持不下來。
但是這次在重構中遇到這個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