我希望为同一个对象拥有多个 jackson 反序列化器,所有这些都基于自定义注释。
理想情况下,我有一个 POJO,例如:
public class UserInfo {
@Redacted
String ssn;
String name;
}
Run Code Online (Sandbox Code Playgroud)
在“正常”条件下,我希望以默认方式序列化此对象:
{"ssn":"123-45-6789", "name":"Bob Smith"}
Run Code Online (Sandbox Code Playgroud)
但出于记录目的(例如),我想编辑 SSN,以便它不会保存在我们的日志中:
{"ssn":"xxx-xx-xxxx", "name":"Bob Smith"}
Run Code Online (Sandbox Code Playgroud)
我也研究过使用@JsonSerialize并提出:
public class UserInfo {
@JsonSerialize(using = RedactedSerializer.class, as=String.class)
String firstName;
String lastName;
}
Run Code Online (Sandbox Code Playgroud)
问题在于它总是使用这个规则。是否可以添加多个@JsonSerializers 并且在运行时代码中仅使用指定的一个?
我也看过“意见”,但理想情况下,我想至少表明该字段存在于请求中 - 即使我不知道该值。