一、案例背景
一个类里面添加了枚举,通过fastjson把该类解析为json的过程报错。
二、 案例现场
定义一个带abstract方法的枚举
public enum OpenSourceEnum {
BILIBILI("bilibili") {
@Override
public Integer getUid(Integer mid, String openId) {
return mid;
}
},
MISSEVAN("missevan") {
@Override
public Integer getUid(Integer mid, String openId) {
return Integer.valueOf(openId);
}
};
public final String code;
OpenSourceEnum(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public abstract Integer getUid(Integer mid, String openId);
}
然后解析为json
com.alibaba.fastjson.JSON.toJSON(OpenSourceEnum.BILIBILI)
递归死循环造成栈溢出
Exception in thread "main" com.alibaba.fastjson.JSONException: toJSON error
at com.alibaba.fastjson.JSON.toJSON(JSON.java:651)
at com.alibaba.fastjson.JSON.toJSON(JSON.java:570)
at com.alibaba.fastjson.JSON.toJSON(JSON.java:642)
at com.alibaba.fastjson.JSON.toJSON(JSON.java:570)
at com.alibaba.fastjson.JSON.toJSON(JSON.java:624)
at com.alibaba.fastjson.JSON.