关于一种fastjson的死循环情况记录
最近在一次项目中,使用fastjson做接口转换中,碰到了一个Stack Overflow。发现在getxxx方法内如果再次嵌套使用fastjson作json转换,就会无限循环。
错误实例:
1 class IAmStupid{ 2 private String a; 3 public String getJson(){ 4 return JSON.toJSONString(this); 5 } 6 }
原因:fastjson底层获取bean数据序列化时,在ASMSerializerFactory的createJavaBeanSerializer方法中,会获取bean的getter方法。然后调用get方法获取数据,在调用getJson时,会再次进入this的序列化,依次循环嵌套,最终栈溢出。
有兴趣的可以试一下,并跟进代码。
本文记录了一种使用fastjson进行接口转换时出现的StackOverflow错误现象。当在get方法内部再次使用fastjson进行json转换时,会导致无限递归直至栈溢出。文中详细解释了错误发生的原因,并提供了错误代码实例。
172万+

被折叠的 条评论
为什么被折叠?



