【发布时间】:2014-12-15 20:13:47
【问题描述】:
我使用休眠检索兄弟列表
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的代码吗?
-
您可以使用
@JsonIgnore,对于Jackson > 1.6,请在属性上使用:@JsonManagedReference、@JsonBackReference,以避免无限递归。 -
我会测试的。但如果我使用 JsonIgnore 兄弟列表将被忽略,我不希望这样。 @JsonBackReference 会生成这样的东西吗? { "brotherId": 4, "name": "bryan", "brothers": [ { "brotherId": 3, "name": "mark", "brothers": null } ] }
-
你能发布更多代码,以及示例输入/输出。同样从未来请使用@sol4me,如果你会给我写点东西,我会收到通知。
标签: java json hibernate serialization infinite-loop