杰克逊@JsonIgnore改变了语义?

Raf*_*ael 9 java json jackson

我们刚刚升级了一些maven依赖项,触发了Jackson从1.7.x到1.9.x的更新

我们用来在setter方法上注释@JsonIgnore,对于不应该从客户端设置的方法.例如:对象的所有者(应该从身份验证主体设置)等.

在我们看来,这个注释的semanthincs已经改变了,这是可能的吗?现在该字段在所有情况下都是jsonignored,而不仅仅是在设置时.

那是这样吗?在1.9中有另一种方法来实现忽略SET吗?

谢谢!河

Raf*_*ael 9

好的,我想我在javadoc中发现并明确提到了这个问题.(杰克逊的文档不容易通过).

另外,从Jackson 1.9开始,如果这是与属性关联的唯一注释,它也会导致整个属性被忽略:也就是说,如果setter有这个注释而getter没有注释,getter也会被忽略.不同的访问者仍然可以使用不同的注释; 因此,如果只忽略"getter",其他访问器(setter或field)将需要显式注释来防止ignoral(通常是JsonProperty).

  • 正确.这是1.9的重大变化(后见之明可能应该等到2.0).要实现你想要的东西("拆分访问器"),你需要在getter上添加显式的`@JsonProperty` - 默认是假设如果只找到一个相关的注释,它就适用于"full"属性的所有部分. (4认同)