我有一个带有'只读'函数的类,不应该序列化为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序列化此函数的输出?
答案 0 :(得分:4)
原来我们使用Jackson 2进行JSON序列化,所以我需要更改注释包位置。
杰克逊1:
import com.codehaus.jackson.annotation.JsonIgnore
杰克逊2:
import com.fasterxml.jackson.annotation.JsonIgnore
使用fasterxml
导入,一切都按预期工作。