Как использовать @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
        }
    }
}

Как я могу это сделать?

Ответы на вопрос(3)

Ваш ответ на вопрос