杰克逊的只写属性

时间:2012-08-08 20:47:03

标签: java json jackson

在我的实体类中,我正在尝试创建一个只写字段(在序列化期间被忽略,但会被正常反序列化)。

@JsonProperty
@JsonSerialize(using=NullSerializer.class)
public String getPassword() {
    return password;
}

这个几乎给了我想要的东西:JSON包含“password”字段,但值始终为null。如何完全删除该字段?

2 个答案:

答案 0 :(得分:10)

仅在 getter getPassword上使用@JsonIgnore,而不是使用NullSerializer。然后在 setter 上使用@JsonProperty("password")

这应该允许password反序列化,但序列化的JSON输出将不包含它。

  

例如,一个“getter”方法否则表示要序列化的属性(比如说,“getValue”来建议属性“value”)将被忽略,除非另一个注释定义了替代,否则不会输出这样的属性使用方法。

答案 1 :(得分:8)

您可以设置access值:

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;