Джексон всегда сериализует полный объект или всегда просто сериализует идентификатор - PullRequest
0 голосов
/ 18 мая 2018

Я использую аннотацию @JsonIdentityInfo для сериализации / десериализации объекта с использованием его идентификатора.

Я реализовал ObjectIdResolver, который работает хорошо.

@JsonIdentityInfo(
  generator = ObjectIdGenerators.PropertyGenerator.class, 
  property = "id", resolver = EntityIdResolver.class, scope = MyClass.class)
public class MyClass{....}

Я нашел документацию поэта аннотация здесь .

Моя проблема заключается в утверждении: «На практике это делается путем сериализации первого экземпляра как полной идентичности объекта и объекта и других ссылок на объект в качестве ссылочных значений."

Теперь моя Rest-Endpoint возвращает что-то похожее на

{
"itemList": [
    {
        "id": 70110,
        "myClass": {
            "id": 3,
            "name": "itemName",
            "date": "2000-01-01"
        },
    },
    {
        "id": 70111,
        "myClass": 3,
    }
]
}

Но это означает, что клиент должен иметь дело с различными типами данных.Клиент знает все объекты, поэтому не имеет значения, вернет ли сериализация либо только идентификатор, либо полный объект.

Как запретить Джексону использовать это поведение?

1 Ответ

0 голосов
/ 18 мая 2018

Наконец-то нашел решение (по крайней мере, для моей проблемы) довольно быстро: добавление

@JsonIdentityReference(alwaysAsId = true) 

в MyClass всегда будет выделяться как

"myClass":3

Я нашел это здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...