杰克逊无视@JsonIgnore?

时间:2015-07-10 15:26:51

标签: java spring spring-mvc serialization jackson

我有一个带有'只读'函数的类,不应该序列化为JSON对象。因为函数的名称以“get”开头,所以Jackson抓住它,并且似乎不尊重附加的@JsonIgnore标记:

import org.codehaus.jackson.annotate.JsonIgnore;

public class MyClass {

    publicMyClass() {}

    @JsonIgnore
    public String getSomeValue() {return "";}
}

我也尝试使用以下语法:

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

@JsonIgnoreProperties({"someValue"})
public class MyClass {

    publicMyClass() {}

    public String getSomeValue() {return "";}
}

在任何一种情况下,结果JSON输出都是相同的:

{someValue:""}

(我们在Spring MVC中使用Jackson 1.9.13。)

除了将函数重命名为“get”之外的其他内容之外,我还能做些什么来阻止Jackson序列化此函数的输出?

1 个答案:

答案 0 :(得分:4)

原来我们使用Jackson 2进行JSON序列化,所以我需要更改注释包位置。

杰克逊1:

import com.codehaus.jackson.annotation.JsonIgnore

杰克逊2:

import com.fasterxml.jackson.annotation.JsonIgnore

使用fasterxml导入,一切都按预期工作。