Java Jackson-序列化时的转换字段值
在使用AngularJS前端的Spring Boot应用程序中,“Pin”字段值必须在序列化时变黑,即,如果POJO中的Pin字段值为null,则相应的JSON字段必须保持空白;如果字段值包含数据,则必须将其替换为“***”字符串Java Jackson-序列化时的转换字段值,java,json,spring-boot,jackson,Java,Json,Spring Boot,Jackson,在使用AngularJS前端的Spring Boot应用程序中,“Pin”字段值必须在序列化时变黑,即,如果POJO中的Pin字段值为null,则相应的JSON字段必须保持空白;如果字段值包含数据,则必须将其替换为“***”字符串 Jackson是否提供了完成此任务的功能?您可以像下面这样轻松完成此任务,而无需任何自定义序列化程序 public class Pojo { @JsonIgnore private String pin; @JsonProperty("pin
Jackson是否提供了完成此任务的功能?您可以像下面这样轻松完成此任务,而无需任何自定义序列化程序
public class Pojo {
@JsonIgnore
private String pin;
@JsonProperty("pin")
public String getPin() {
if(pin == null) {
return "";
} else {
return "***";
}
}
@JsonProperty("pin")
public void setPin(String pin) {
this.pin = pin;
}
@JsonIgnore
public String getPinValue() {
return pin;
}
}
您可以使用
Pojo.getPinValue()
来获取准确的值。您可以像下面这样轻松地完成,无需任何自定义序列化程序
public class Pojo {
@JsonIgnore
private String pin;
@JsonProperty("pin")
public String getPin() {
if(pin == null) {
return "";
} else {
return "***";
}
}
@JsonProperty("pin")
public void setPin(String pin) {
this.pin = pin;
}
@JsonIgnore
public String getPinValue() {
return pin;
}
}
您可以使用
Pojo.getPinValue()
获取准确的值。尝试以下示例
public class Card {
public int id;
public String pin;
}
public class CardSerializer extends StdSerializer<Card> {
public CardSerializer() {
this(null);
}
public CardSerializer(Class<Card> t) {
super(t);
}
@Override
public void serialize(Card value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeNumberField("id", value.id);
jgen.writeStringField("pin", "****");
jgen.writeEndObject();
}
}
您可以在这里做一些改进,比如直接在类上注册序列化程序,但是您可以在第4节阅读更多关于它的内容-尝试以下示例
public class Card {
public int id;
public String pin;
}
public class CardSerializer extends StdSerializer<Card> {
public CardSerializer() {
this(null);
}
public CardSerializer(Class<Card> t) {
super(t);
}
@Override
public void serialize(Card value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeNumberField("id", value.id);
jgen.writeStringField("pin", "****");
jgen.writeEndObject();
}
}
这里可以做一些改进,比如直接在类上注册序列化程序,但您可以在第4节中了解更多信息-您需要客户序列化程序来查看此处-您需要客户序列化程序来查看此处-而Anton Belev发布的方法在架构方面更为清晰,我更喜欢这个,因为它是一个快速而小的解决方案:-)虽然安东·贝列夫(Anton Belev)发布的方法在架构方面会更干净,但我更喜欢这个,因为它是一个快速而小的解决方案:-)这是正确的方法。这是正确的方法。