杰克逊无视@JsonIgnore?

Jackson ignoring @JsonIgnore?

我有一个带有 'read-only' 函数的 class 不应序列化为 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:""}

(我们将 Jackson 1.9.13 与 Spring MVC 一起使用。)

除了将函数重命名为以 "get" 以外的其他名称开头外,我还能做些什么来防止 Jackson 序列化此函数的输出?

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

杰克逊 1:

import com.codehaus.jackson.annotation.JsonIgnore

杰克逊 2:

import com.fasterxml.jackson.annotation.JsonIgnore

使用 fasterxml 导入一切正常。