重要的事情放在最前面,,以后不管遇到什么异常都一定要把异常读懂再想办法怎么解决,把异常读懂,异常读懂。。。。。。

这个异常我记得以前遇到过,而且好像已经做了笔记,,,,,今天翻了一下竟然没有,,,,,真是****

描述一下问题起源。

我想用从页面发送一个异步请求到服务器,服务器给我返回一个List对象(List<Duty>职务列表)。服务器需要把这个List对象转换成JSON格式返回。。。恩,,发送请求也没问题,已经到Controller里面的方法了,方法顺利处理,但是controller方法返回List对象的时候出现了错误。。。。。。。报了如下错误:(这个异常非常长,因为发生的是递归错误,但是重要的是前面一两句话,所以只贴最重要的。)

org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Infinite recursion (StackOverflowError) (through reference chain: com.pms.entities.base.Duty["dutyInfos"]->org.hibernate.collection.internal.PersistentSet[0]->com.pms.entities.personnelManage.DutyInfo["duty"]->com.pms.entities.base.Duty["dutyInfos"]->org.hibernate.collection.internal.PersistentSet[0]->com.pms.entities.personnelManage.DutyInfo["duty"]->com.pms.entities.base.Duty["dutyInfos"]->org.hibernate.collection.internal.PersistentSet[0]->com.pms.entities.personnelManage.DutyInfo["duty"]->com.pms.entities.base.Duty["dutyInfos"]->org.hibernate.collection.internal.PersistentSet[0]->com.pms.entities.personnelManage.DutyInfo["duty"]->com.pms.entities.base.Duty["dutyInfos"]-后面的省略。。。。。。。。。。

解读一下这个异常:

Infinite recursion 是什么意思???---->无限递归..恩。。无限递归导致StackOverflowError。。。through reference chain

问题大概已经清楚了,,,是因为Duty持有DutyInfo的引用,而DutyInfo的又持有Duty的引用。。。所以当Controller方法返回List对象的时候,需要把列表中的对象转化为json 格式的数据,,当将一个Duty对象转为json格式的时候需要把duty对象里面的DutyInfo属性也转化,在转化DutyInfo对象的时候又因为DutyInfo中持有Duty的引用,又要将duty对象转为json,,,那么因为你引用我,我又引用你造成了无限递归。。。。。。。

那么如何解决呢???

只要双方有其中一方在转为json的时候忽略掉另一方这个引用,那么引用链就断掉了无法形成递归,比如我的Duty中有一个Set<DutyInfo>属性。我在转为json的时候忽略掉它。。。。即可解决。。因为我需要返回的数据刚好不需要Set<DutyInfo>这个属性的数据。

具体怎么做???在Duty类中的private Set<DutyInfo> dutyInfos; 上面加上@JsonIgnore这个注解即可。。。。。。。。。

这个错误已经犯两次了。。。再犯剁**

一个关于JSON的异常,获取List对象失败的。。。的更多相关文章

  1. jackson使用问题:mapper.readValue()将JSON字符串转反序列化为对象失败或异常

    问题根源:转化目标实体类的属性要与被转JSON字符串总的字段 一 一对应!字符串里可以少字段,但绝对不能多字段. 先附上我这段出现了问题的源码: // 1.接收并转化相应的参数.需要在pom.xml中 ...

  2. 在SpringMVC中获取request对象的几种方式

    1.最简单的方式(注解法) @Autowired private HttpServletRequest request; 2.最麻烦的方法 a. 在web.xml中配置一个监听 <listene ...

  3. .net从网络接口地址获取json,然后解析成对象(一)

    整理代码,今天遇到一个问题,就是从一个场景接口获取json,然后解析成对象.之前的时候都好好的,这次返回的json字符串里,由于字符编码的问题,格式上不能转换.一直以为是解析的过程编码有误,试了utf ...

  4. 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法

    今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下: 1 //获取Serv ...

  5. .net从网络接口地址获取json,然后解析成对象(二)

    整理代码,这是第二种方法来读取json,然后反序列化成对象的,代码如下: public static Order GetOrderInfo(string _tid, string _orderNo) ...

  6. 做一个类似JQuery获取DOM对象的$()

    在dom操作时,有时根据id获取单个对象.有时根据className获取多个对象.平常可能我们用两个函数来实现这两个功能.不过我将它们整合了一下,目前使用情况良好,函数如下: view source ...

  7. 如何构建JSON数据,JSON数据的格式,JSON数据的获取

    假设你是用$.getJSON();方法获取JSON数据$.getJSON(url,{"Action":"getStudent"},function(data){ ...

  8. .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二)

    .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一) 上一篇主 ...

  9. JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序

    JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序 .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator   ...

随机推荐

  1. Redis介绍与安装

    一.redis简介 (一)什么是redis 1.redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 内存数据库. 2.特点:读写性能强悍 支持丰 ...

  2. Bash实践:抽样检测数据迁移至Redis集群后的数据一致性

    熟悉了一段时间的Bash编程,因此借此任务操作一把bash编程,主要涉及到Redis单节点与Redis集群的操作 1. 任务背景 近日有个任务需要将历史的Redis(主从节点)中的数据迁移至Redis ...

  3. ExtJs6解决添加和修改Form共用一个form的隐藏域的id的取消传值

    问题重现:修改不会有问题,id会绑定之前的grid,有具体数字 添加有问题,因为id是空,传的是绑定值的话会显示“类名-1”,从int类型变成了string类型,后台会出错 这是EduQuestion ...

  4. badboy详解篇

    上一篇学习了jmeter录制的两种方法,badboy是比较好用的一个,它本身就是个测试工具,今天具体来介绍一下: 1.检查点 检查点就是记录被测系统某个值的预期结果 以百度搜索gogomall为例子 ...

  5. FileReader实现上传图片前本地预览

    平时做图片上传预览时如果没有特殊的要求就直接先把图片传到后台去,成功之后拿到URL再渲染到页面上.或者使用前端插件.这篇博客使用的是HTML5的新特性——FileReader.由于兼容性,这种方法不适 ...

  6. Centos 下搭建FTP上传下载服务器

    首先判断你服务器上是否安装了vsftpd 安装vsftpd #yum -y install vsftpd   安装完成之后就要重启vsftpd服务 到vsftpd的主配置文件里面 把这个改为NO 默认 ...

  7. spring中增加自定义配置支持

    spring.schemas 在使用spring时,我们会首先编写spring的配置文件,在配置文件中,我们除了使用基本的命名空间http://www.springframework.org/sche ...

  8. 自定义控件实现-今日头条Android APP图集效果

    前提 产品有个新需求,类似今日头条的图集效果 大致看了下UI,大致就是ViewPager,横向滑动切换图片,纵向滑动移动图片,纵向超过一定距离,图片飞出,图集淡出动画退出,支持图片的双击放大. 思路 ...

  9. ECMA6所有知识点大概笔记

    ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现 初学者一开始学习JavaScript,其实就是在学3.0版的语法. -------------------- ...

  10. Linux基础之-网络配置,主机名设置,ssh登陆,scp传输

    一. 网络配置修改 1.临时修改(ip,dns,netmask,gateway) 临时修改网络配置,只要没有涉及到修改配置文件的,在network服务重启后,所有设置失效 2.永久修改(ip,dns, ...