杰克逊无视@JsonIgnore?

J.S*_*eve 2 java serialization spring spring-mvc jackson

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

import org.codehaus.jackson.annotate.JsonIgnore;

public class MyClass {

    publicMyClass() {}

    @JsonIgnore
    public String getSomeValue() {return "";}
}
Run Code Online (Sandbox Code Playgroud)

我还尝试使用以下语法:

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

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

    publicMyClass() {}

    public String getSomeValue() {return "";}
}
Run Code Online (Sandbox Code Playgroud)

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

{someValue:""}
Run Code Online (Sandbox Code Playgroud)

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

除了重命名函数以从“get”以外的东西开始,我还能做些什么来防止杰克逊序列化这个函数的输出?

J.S*_*eve 6

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

杰克逊 1:

import com.codehaus.jackson.annotation.JsonIgnore
Run Code Online (Sandbox Code Playgroud)

杰克逊2:

import com.fasterxml.jackson.annotation.JsonIgnore
Run Code Online (Sandbox Code Playgroud)

随着fasterxml进口一切正常。