Как использовать @JsonIdentityInfo с циклическими ссылками?
Я пытаюсь использовать @JsonIdentityInfo из Jackson 2, как описаноВот.
Для целей тестирования я создал следующие два класса:
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);
}
Добавление@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
к классу A и / или классу B тоже не работает.
Я надеялся, что смогу сериализовать (а потом десериализовать)a
что-то вроде этого: (хотя не слишком уверен насчет JSON)
{
"b": {
"@id": 1,
"a": {
"@id": 2,
"b": 1
}
}
}
Как я могу это сделать?