Code Bye

springmvc 返回json死循环问题

两个持久化类之间有外键关联,当springmvc通过@ResponseBody注解返回json,后台显示转换json循环异常。
比如班级和学生两个类,班级和学生是一对多的关系,学生相对应班级是多对一的关系,在hibernate中进行配置后,并且在学生和班级类中关联属性加了@JsonIgnore注解,奇怪 的现象来了,查询班级信息,在返回转换json到前台正常,查询学生信息时,能查到正常的,但是却在转换json时好像是死循环,前台得不到数据。这个问题一直困扰了我很久,有没有哪位高手有相同经历并解决这个问题的帮帮忙,谢谢了!


20分
我记得以前 我用spring mvc @ResponseBody返回json的时候,需要配置返回的格式 application/json

而且我对你用的@JsonIgnore 这个不怎么懂,为啥不得到数据直接Object——>json呢

关联关系 配置的一对了吧?
你用的哪个json包?  fasterxml的还是codehaus
引用 3 楼 whos2002110 的回复:

你用的哪个json包?  fasterxml的还是codehaus

用的是前者


20分
引用 4 楼 liangpzhmzcd 的回复:
Quote: 引用 3 楼 whos2002110 的回复:

你用的哪个json包?  fasterxml的还是codehaus

用的是前者

<mvc:annotation-driven>
<mvc:message-converters>
<bean class=”org.springframework.http.converter.json.MappingJackson2HttpMessageConverter” />
</mvc:message-converters>
</mvc:annotation-driven>
这样配置试下, 我以前有个类似的情况是因为项目中有两套json序列化包,  两套包的注解及方法都是一样。 很容易搞错

问题解决了,我把需要在前台显示的字段添加在javabean中,然后在业务层中读取相应的对象并对其赋值,再在控制层把javabean中外键关联的对象进行屏蔽后再进行json转换,最后向前台输出json字符串就可以了,下面是我进行json转换的代码:
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setIgnoreDefaultExcludes(false);
		jsonConfig.setExcludes(new String[]{"user","know"});
		JSONObject jGridVo = JSONObject.fromObject(gridVo,jsonConfig);  
		String jsonstr = jGridVo.toString();
		response.getWriter().write(jsonstr);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明springmvc 返回json死循环问题