2012-02-15 3 views
8

Мы просто модернизированы некоторые зависимости Maven, которые инициировали обновление Джексона от 1.7.x до 1.9.xДжексон @ JsonIgnore изменил семантику?

Мы используем аннотировать @JsonIgnore на инкубационные методах, о методах не должен быть установлен со стороны клиента. например: владелец объекта (должен быть установлен из принципала аутентификации) и т. д.

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

- это случай? есть ли альтернативный способ в 1.9 для реализации игнорирования только SET?

спасибо! р.

+0

Вы добавляете аннотацию @JsonProperty на поле или геттер? –

+0

Я добавляю его в Setter. Который предотвращает его установку во время де-сериализации в 1.7.x – Rafael

ответ

8

Хорошо, я думаю, что нашел и упомянул об этом в javadoc. (документация Джексона непросто пройти).

Кроме того, начиная с Джексоном 1.9, если это только аннотация, связанная с собственностью, он также будет вызывать вызывать все имущество, чтобы быть проигнорировано: то есть, если сеттер имеет эту аннотацию и геттер не имеет аннотаций , геттер также эффективно игнорируется. Всевозможные аксессоры могут по-разному использовать разные аннотации; поэтому, если игнорировать только «getter», другим аксессуарам (сеттер или поле) потребуется явная аннотация для предотвращения игнорирования (обычно JsonProperty).

+4

Правильно. Это было большим изменением в 1,9 (что в ретроспективе, возможно, должно было дождаться 2.0). Чтобы добиться того, что вы хотите («разделять аксессоры»), вам нужно добавить явный '@ JsonProperty' на getter - по умолчанию предполагается, что если будет найдено только одна соответствующая аннотация, это применимо ко всем частям« полного »свойства , – StaxMan