2016-12-19 4 views
0

У Джексона есть аннотация @JsonIgnoreProperties на уровне поля, которая является удивительной, но иногда она может быть большой.Есть ли что-то вроде @JsonIgnoreOtherProperties?

@JsonIgnoreProperties({ "name", "phone", ... "20th item"}) 
private User user; 

Я ищу что-то вроде:

@JsonIgnoreOtherProperties("email") 
private User user; 

Так это будет игнорировать все поля, но по электронной почте.

Есть ли что-то вроде @JsonIgnoreOtherProperties?

ответ

0

Я не думаю, что существует, но есть несколько способов достижения того, что вы хотите (кроме существующего решения):

1) Использование @JsonView (http://wiki.fasterxml.com/JacksonJsonViews). См. Пример What is the JSON View class in Jackson and how does it work?.

2) Создание другого вида User, который содержит минимальный набор полей, возможно UserMinimal. Он может наследовать от общего интерфейса, как и ваш другой вид User, чтобы показать, что они действительно представляют один и тот же объект.

3) Настройка устройства отображения объектов и использование фильтра. См. Пример How do I exclude fields with Jackson not using annotations?.

Лично я предпочитаю первое решение, если у вас простой случай использования, а второй, если у вас более сложный. Мне не нравится третий вариант, поскольку, по-моему, настройка объектов-сопоставлений приводит к тому, что мой опыт вызывает склонность к ошибкам.

Ваша идея аннотации звучит интересно. Я бы подумал о том, чтобы разместить его как запрос функции (я думаю, он пойдет https://github.com/FasterXML/jackson-annotations/issues).

Смежные вопросы