2012-02-15 13 views
8

simplemente Hemos actualizado algunas dependencias de Maven, que desencadenaron una actualización de Jackson de 1.7.x para 1.9.xJackson @JsonIgnore cambió la semántica?

Utilizamos para anotar @JsonIgnore en los métodos de la moda, sobre los métodos no se supone que ser establecido desde el lado del cliente. por ejemplo: el propietario de un objeto (con debe establecerse desde el principal de autenticación), etc.

Nos parece que los semántica de esta anotación han cambiado, ¿es posible? ahora el campo ha sido ignorado en todos los casos, y no solo cuando se establece.

es que el caso? ¿Hay alguna forma alternativa en 1.9 para implementar ignorar solo SET?

gracias! r.

+0

¿Desea agregar a la anotación @JsonProperty en el campo o el comprador? –

+0

Lo estoy agregando en Setter. Lo que impide que se establezca durante la des-serialización en 1.7.x – Rafael

Respuesta

8

Ok, creo que he encontrado y una mención explícita a este problema en el javadoc. (La documentación de jackson no es fácil de pasar).

Además, a partir de Jackson 1.9, si se trata de la única anotación asociada con una propiedad, sino que también hará que causar toda la propiedad para ser ignorado: es decir, si colocador tiene esta anotación y getter no tiene anotaciones , getter también se ignora de manera efectiva. Todavía es posible que diferentes usuarios accedan a diferentes anotaciones; así que si solo se debe ignorar "getter", otros accessors (setter o field) necesitarían una anotación explícita para evitar ignoral (generalmente JsonProperty).

+4

Correcto. Este fue el gran cambio en 1.9 (que en retrospectiva quizás debería haber esperado hasta 2.0). Para lograr lo que desea ("acceso compartido de división"), debe agregar explícitamente '@ JsonProperty' en getter; el valor predeterminado es asumir que si solo se encuentra una anotación relevante, se aplica a todas las partes de una propiedad" completa " . – StaxMan