如何将@JsonIdentityInfo与循环引用一起使用?
2022-09-04 00:45:10
我正在尝试使用杰克逊2@JsonIdentityInfo,如此处所述。
出于测试目的,我创建了以下两个类:
public class A
{
private B b;
// constructor(s) and getter/setter omitted
}
public class B
{
private A a;
// see above
}
当然,幼稚的方法失败了:
@Test
public void testJacksonJr() throws Exception
{
A a = new A();
B b = new B(a);
a.setB(b);
String s = JSON.std.asString(a);// throws StackOverflowError
Assert.assertEquals("{\"@id\":1,\"b\":{\"@id\":2,\"a\":1}}", s);
}
添加到类 A 和/或类 B 也不起作用。@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
我希望我能序列化(后来反序列化)为这样的东西:(虽然不太确定JSON)a
{
"b": {
"@id": 1,
"a": {
"@id": 2,
"b": 1
}
}
}
我该怎么做?