具有杰克逊的只写属性

2022-09-04 05:36:04

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

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

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


答案 1

您可以设置值:access

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

答案 2

getter 使用 @JsonIgnore,而不是使用 .然后也用于二传机getPasswordNullSerializer@JsonProperty("password")

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

例如,一个“getter”方法将以其他方式表示要序列化的属性(例如,“getValue”以建议属性“value”)将被忽略,并且不会输出此类属性,除非另一个注释定义了要使用的替代方法。