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

时间:2014-12-15 20:13:47

标签: java json hibernate serialization infinite-loop

我使用hibernate检索兄弟列表

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

    public List<Brother> brothers;

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

    //Getter Setter
} 

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

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

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

我怎么解决?有没有办法表明杰克逊图书馆的最大递归次数?

我的代码,非常简单。

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

1 个答案:

答案 0 :(得分:3)

循环参考而出现问题。

  

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

请参阅here了解更多