我有2个以下的课程,有循环参考,我没有为了方便而设置getter和setter
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "i")
public class A{
int i;
B b1;
B b2;
}
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "i")
public class B {
int i;
AI a;
}
如果A.b1和A.b2引用相同的B对象,我得到序列化的json如下:
{
"i": 1,
"b1": {
"i": 2,
"a": 1
},
"b2": 2
}
但我的预期结果是:
{
"i": 1,
"b1": {
"i": 2,
"a": 1
},
"b2": {
"i": 2,
"a": 1
}
}
我检查过jackson的源代码看起来像以前使用的对象的jackson存储ID /引用,如果任何其他对象使用相同的引用,它将使用id而不是序列化整个对象,如果对象停留则很好在同一个循环链中,如果他们不在同一个链中,那就像我的例子所示的那样奇怪。
任何人都可以通过@identityinfo注释帮助我获得预期的结果吗?