如何在Java中使用Json序列化时避免无限循环

我使用hibernate检索兄弟列表

public class Brother { public int brotherId; public string name; public List brothers; public Brother() { brothers = new ArrayList(); } //Getter Setter } 

Hibernate是在兄弟列表中使用lazy select配置的,这在Java端工作,但问题是当我想将一个Brother对象序列化为JSON时。

 I've got org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) 

例如布莱恩可以让马克作为一个反面的兄弟……

我怎么解决呢? 有没有办法表明jackson图书馆的最大递归数?

我的代码,真的很简单。

 Brother brother = this.myservice.getBrother(4); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(brother)); 

循环参考而产生问题。

Jackson 1.6您可以使用两个注释来解决无限递归问题,而不会在序列化期间忽略getter / setter: @JsonManagedReference@JsonBackReference

请参阅此处了解更多