杰克逊无视@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
导入一切正常。
我有一个带有 '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
导入一切正常。