【发布时间】:2023-03-27 02:52:01
【问题描述】:
在我的实体类中,我正在尝试创建一个只写字段(在序列化过程中被忽略,但会正常反序列化)。
@JsonProperty
@JsonSerialize(using=NullSerializer.class)
public String getPassword() {
return password;
}
这几乎给了我我想要的:JSON 包含“密码”字段,但值始终为空。如何完全删除该字段?
【问题讨论】:
在我的实体类中,我正在尝试创建一个只写字段(在序列化过程中被忽略,但会正常反序列化)。
@JsonProperty
@JsonSerialize(using=NullSerializer.class)
public String getPassword() {
return password;
}
这几乎给了我我想要的:JSON 包含“密码”字段,但值始终为空。如何完全删除该字段?
【问题讨论】:
你可以设置access值:
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
【讨论】:
仅在 getter getPassword 上使用 @JsonIgnore,而不是使用 NullSerializer。然后在 setter 上也使用@JsonProperty("password")。
这应该允许 password 被反序列化,但序列化的 JSON 输出不会包含它。
例如,一个“getter”方法将被忽略,除非另一个注释定义了替代方法使用方法。
【讨论】:
@JsonIgnore 吸气剂,但我刚刚测试过,我还需要将@JsonProperty 添加到吸气剂。也许这已经在不同版本中发生了变化,不知道。见编辑。
@JsonProperty 在 setter 上,@JsonIgnore 在 getter 上。非常感谢。
@JsonIgnore。很高兴知道我何时更新。