假设我有一个像这样的 POJO:
public class User {
private Long id;
private String username;
// usual getters and setters
....
// only for serialisation purposes
public String getUpperUsername() {
return this.id % 2 == 0 ? username : username.toUpperCase();
}
}
Run Code Online (Sandbox Code Playgroud)
我想制作一个条件序列化器,以便在满足某些条件时序列化与实际值不同的值。
我查看了@JsonGetter,但显然它已被弃用,@JsonProperty 似乎不起作用。
你有什么主意吗?
先感谢您 :)
mac*_*ias 10
当我这样使用 @JsonProperty 时,它实际上对我有用:
public class User {
private Long id;
private String username;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@JsonProperty("username")
public String getUppercaseUsername() {
return this.id % 2 == 0 ? username : username.toUpperCase();
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处的测试示例。
如果您想将此大写逻辑与实体本身分开,您还可以使用自定义序列化程序,例如此处。
然而,事实是这是一个业务逻辑,不应由序列化程序处理 - 这是设计失败。而是将用户名映射到其他地方并仅将 Jackson 用于序列化 - 这是该库的目的。
| 归档时间: |
|
| 查看次数: |
7516 次 |
| 最近记录: |