日期:2014-05-17  浏览次数:20740 次

spring mvc3 应用jackson返回json时候无限循环
controller局部代码如下:

@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Category> list() {
List<Category> categories = mobilePublishService.getCategorys();
return categories;
}

categories.size()=9
其中category有属性:

        private String name;
private String description;
private String tableName;
private int level;
private boolean hasSons;
private List<Category> sons=new ArrayList<Category>(0);
private Category parent;
此时的categories中例如有:根节点  子节点1 子节点2 子节点3。。。。子节点8 等9个值
当返回json时候,jackson在将list转换为json时,会无限循环输出根节点(即第一条数据)
个人认为是由于category中有属性 sons 以及  parent  他们都是 category
当读到儿子的category时候 儿子中有属性 parent的category 会回到根节点(第一条数据)继续读
如此导致无限循环
想知道有什么方法可以避免无限循环,达到正常输出效果,不会无限循环

------解决方案--------------------
你可以考虑改你的实体类设计了。最好各司其职,不要一味的封装到底