有啥方法可以防止杰克逊中的字段反序列化?
Posted
技术标签:
【中文标题】有啥方法可以防止杰克逊中的字段反序列化?【英文标题】:Is there any way to prevent field from deserialization in jackson?有什么方法可以防止杰克逊中的字段反序列化? 【发布时间】:2015-01-29 03:00:02 【问题描述】:有什么方法可以防止杰克逊中的字段反序列化? 但我需要序列化该字段 我尝试使用@jsonIgnoreProperties 这可以防止序列化和反序列化。
【问题讨论】:
【参考方案1】:从Jackson 2.6 开始,可以将属性标记为只读或只写。这比破解两个访问器上的注释并将所有信息保存在一个地方更简单:
public class NoDeserialization
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private String prop;
public String getProp()
return prop;
public void setProp(String prop)
this.prop = prop;
【讨论】:
【参考方案2】:“诀窍”是在 setter 和 getter 上结合 @JsonProperty 和 @JsonIgnore,如下例所示
public class SerializeDemo
@JsonIgnore
private String serializeOnly;
@JsonProperty("serializeOnly")
public String getSerializeOnly()
return serializeOnly;
@JsonIgnore
public void setSerializeOnly(String serializeOnly)
this.serializeOnly= serializeOnly;
【讨论】:
谢谢。会尝试让您知道。 是的。它确实做到了“The Trick”。非常感谢 现在我们还有另一个问题。我们不能在 setter 和属性中都使用 @JsonIgnore。我们的 spring web 项目给出了以下异常。 org.springframework.data.mapping.model.MappingException:不明确的映射!在字段 yyyyyy 上配置的注释 JsonIgnore 及其在类 XXXXXEntity 中的访问器方法之一!有什么想法吗?? 从 Jackson 2.6 开始@JsonProperty(access = JsonProperty.Access.READ_ONLY)
应该可以,见 Frank Pavageau's answer【参考方案3】:
您可以使用@JsonIgnore
om 字段声明。
例如。
@JsonIgnore
private Integer fieldToPrevent; // this will be avoided
private Integer regularField; // will serialize
看here's的解释。
I have gave same answer here also.
【讨论】:
以上是关于有啥方法可以防止杰克逊中的字段反序列化?的主要内容,如果未能解决你的问题,请参考以下文章