我遇到两个对象之间存在循环引用的情况,并且在使用jackson序列化任何对象时会导致错误。以下是示例情况:
Class A {
private B b;
}
Class B {
private A a;
}
杰克逊以@JsonManagedReference
和@JsonBackReference
注释的形式为这种情况提供了解决方案。虽然该解决方案非常适用于需要在结果json中仅引用另一个类中的一个类的情况。例如,以下代码有效:
Class A {
@JsonManagedReference
private B b;
}
Class B {
@JsonBackReference
private A a;
}
尝试序列化A时会引用B。
我希望反面也是正确的。当我序列化A时,我想要字段b,当我序列化时,我想要字段a。这就是我尝试过的。
Class A {
@JsonManagedReference("abc")
@JsonBackReference("xyz")
private B b;
}
Class B {
@JsonBackReference("abc")
@JsonManagedReference("xyz")
private A a;
}
这不起作用。如何实现这一目标?
答案 0 :(得分:0)
从版本Jackson
开始,2.0
为此问题提供了解决方案。
@JsonIdentityInfo
注释以解决此问题。