Я использую Jackson 2 и боролся с динамической фильтрацией свойств во время десериализации.
Моя идея состоит в том, чтобы загрузить объект и просто прочитать изменения:
objectMapper.readerForUpdating(entity).readValue(json)
Я пытался использовать @JsonView
, который работает для простых случаев.
Я получаю обновление EntityA, и читатель должен принимать только идентификатор EntityB, который используется для поиска постороннего объекта через EntityManager.
Использование @JsonView
позволяет мне справиться с этим, но мне нужны разные классы представления для всех моих вариантов использования, например. обновление только EntityB.
class Views {
public static class Update {
}
public static class Display extends Update {
}
}
class EntityA {
@JsonView(Views.Update)
EntityB b;
...
}
class EntityB {
@JsonView(Views.Update)
Integer id;
@JsonView(Views.???)
String value;
...
}
Есть ли способ динамически фильтровать свойства во время десериализации, например @JsonFilter
?
Я нашел старый ответ, чтобы сделать это с помощью BeanDeserializerModifier, но я надеялся, что есть лучший способ.