Свойства фильтра, аналогичные JsonFilter, во время десериализации

Я использую 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, но я надеялся, что есть лучший способ.


person CSchulz    schedule 26.07.2016    source источник