杰克逊@JsonIgnore改变了语义?

时间:2012-02-15 19:09:33

标签: java json jackson

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

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

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

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

谢谢! 河

1 个答案:

答案 0 :(得分:9)

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

  

此外,从Jackson 1.9开始,如果这是与属性关联的唯一注释,则还会导致整个属性被忽略:即,如果setter具有此注释且getter没有注释,则getter为也有效地忽略了。不同的访问者仍然可以使用不同的注释;因此,如果只忽略“getter”,其他访问器(setter或field)将需要显式注释来防止ignoral(通常是JsonProperty)。