jackson序列化json报错java.lang.StackOverflowError
来源:互联网 发布:微商推广软件 编辑:程序博客网 时间:2024/06/03 23:41
工作中使用jackson序列化json到前台的时候,发现报错了
前台触发,后台直接卡死,部分堆栈如下
[ERROR][2017-07-03 09:35:37,148][org.framework.core.util.LogUtil][org.framework.web.system.listener.OnlineListener:sessionDestroyed():34] - java.lang.NullPointerException[ERROR][2017-07-03 09:50:18,554][org.framework.core.common.exception.GlobalExceptionResolver]全局处理异常捕获:java.lang.StackOverflowErrorat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:800)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3196)at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1373)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1861)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:613)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
跟踪代码调试,最终发现异常点在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)
将最终异常粘贴出来,部分报错信息如下(不过基本全部是重复的)
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain:
org.framework.web.system.pojo.base.TSUserOrg["tsUser"]->com.moses.entity.mudcontacts.MudcontactsEntity["userOrgList"]->org.hibernate.collection.internal.PersistentBag[0]->org.framework.web.system.pojo.base.TSUserOrg["tsUser"]->com.moses.entity.mudcontacts.MudcontactsEntity["userOrgList"]->org.hibernate.collection.internal.PersistentBag[0]->org.framework.web.system.pojo.base.TSUserOrg["tsUser"]->com.moses.entity.mudcontacts.MudcontactsEntity["userOrgList"]->org.hibernate.collection.internal.PersistentBag[0]->
结合上述关键词,
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain:
就比较容易的搜到了解答方案,
根据如下博客将问题解决 http://blog.csdn.net/ludengji/article/details/11584281
A类中,有个属性:List<B> b, A与B的关系为 OneToMany;在B类中,有属性A a,引用到A中的字段id,并作为外键。hibernate查询结果正常,可以看到返回的A对象中,有b参数值,但在json转换的时候就出现了无限递归的情况。个人分析,应该是json在序列化A中的b属性的时候,找到了B类,然后序列化B类,而B类中有a属性,因此,为了序列化a属性,json又得去序列化A类,如此递归反复,造成该问题。
解决:
在B类中a的getter setter方法上加注解@JsonBackReference,其实自己试过只在setter方法上加@JsonBackReference也够了。
即在TSUserOrg的setTsUser上加注解@JsonBackReference即可。
学习:遇到比较底层的报错式,如果在网上无法得出有用的信息,可自己跟踪下,找到具体发生错误的地方,其实报错信息那时候就比较明显了。
阅读全文
1 0
- jackson序列化json报错java.lang.StackOverflowError
- Spark Executor 报错 java.lang.StackOverflowError
- Weblogic报java.lang.StackOverflowError
- 使用EditText出现java.lang.StackOverflowError报错
- springmvc返回json报错:java.lang.NoSuchMethodError: org.codehaus.jackson.map.SerializationConfig.isEnable
- Spring集成JSON报错:java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException
- Hive报错java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
- Java序列化jackson
- Java对象Json序列化—Jackson框架
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- Java下利用Jackson进行JSON解析和序列化
- java -Xms -Xmx设置java应用程序运行的内存大小,Xms Xmx PermSize MaxPermSize 区别
- iOS Protocol 协议
- 数据挖掘经典算法--朴素贝叶斯分类
- 关于The MVP
- Trafodion Troubleshooting-current onlineEpoch is less than new onlineEpoch
- jackson序列化json报错java.lang.StackOverflowError
- 利用vmware在自己的个人电脑上面搭建虚拟linux服务器
- Node -- 理解Buffer
- 常见C++面试题1
- 数据结构复习——队列解决报数问题
- 美团CODEM 数码
- 二维数组复制到另一个二维数组
- 迈向成功的关键在于执行(摘自李开复博士的《做最好的自己》)
- Theme主题大全