我使用休眠方式检索兄弟列表

public class Brother {
    public int brotherId;
    public string name;

    public List<Brother> brothers;

    public Brother()
    {
        brothers = new ArrayList<Brother>();
    }

    //Getter Setter
}


在兄弟列表中使用惰性选择配置了Hibernate,这在Java端有效,
但是问题是当我想将Brother对象序列化为JSON时。

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


例如,布莱恩(Bryan)可以将马克(Mark)当作兄弟,反之亦然...

我该如何解决?有什么方法可以指示对杰克逊库的最大递归次数?

我的代码,真的很简单。

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

最佳答案

由于有循环参考,因此出现了问题。


  由于Jackson 1.6您可以使用两个注释来解决无限
  递归问题,而不会忽略获取器/设置器
  序列化:@JsonManagedReference和@JsonBackReference。


有关更多信息,请参考here

10-07 12:56