Подтвердить что ты не робот

Использование @JsonIgnoreProperties для известных и неизвестных свойств

Моя текущая аннотация для игнорирования известных свойств для объекта JPA:

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler","created","updated","createdBy","lastUpdatedBy"})

В дополнение к игнорированию этих свойств класса, я также хотел бы игнорировать любые неизвестные свойства, которые получает сервер. Я знаю единственный способ игнорировать неизвестные свойства по следующей аннотации:

@JsonIgnoreProperties(ignoreUnknown=true)

Но не уверен, как добавить это в мою текущую аннотацию, указанную выше. Я попробовал несколько методов ниже, но ни один из них не работает, и я не мог найти пример онлайн для этого сценария.

Любой пример или руководство по документации также поможет.

4b9b3361

Ответ 1

Установите ignoreUnknown в true и определите имена свойств, которые нужно игнорировать в элементе value:

@JsonIgnoreProperties(ignoreUnknown = true, 
                      value = {"hibernateLazyInitializer", "handler", "created"})

Как это работает?

Посмотрите на эту цитату из документации (выделено мое):

В простейшем виде аннотация выглядит следующим образом:

@Entity

Символ знака (@) указывает компилятору, что ниже следует аннотация. В следующем примере имя аннотации - Override:

@Override
void mySuperMethod() { ... }

Аннотация может включать элементы, которые могут быть именованными или безымянными, и для этих элементов есть значения:

@Author(name = "Benjamin Franklin", date = "3/27/2003")
class MyClass() { ... }

или же

@SuppressWarnings(value = "unchecked")
void myMethod() { ... }

Если есть только один элемент с именем value, то имя можно опустить, как в:

@SuppressWarnings("unchecked")
void myMethod() { ... }

Другой способ обработки неизвестных свойств

Чтобы игнорировать неизвестные свойства, вы также можете сделать:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);