[英]return empty value for property during json serialization
我在 java 中有一个 class 包含敏感数据,因此我想在导出数据时仅省略属性值。 尽管 JSON 中的属性名称应该仍然可用。
例子:
private String id;
private String username;
private String password;
我怎样才能只将 go 的密码设为空。 而不是让整个财产消失,
{"id":"asdasd0123213", "username":"smith", password: ""}
使用注释 @JsonSerialize 作为密码字段并创建 CustomSerialize class。 或创建方法:
@JsonGetter("password")
public String getEmptyPassword() {
return "";
}
您也可以在没有自定义序列化程序的情况下解决它。 快速示例:
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class JacksonTest {
private String id;
private String username;
@JsonIgnore
private String password;
@JsonProperty("password")
public String getPassword() {
return "";
}
@JsonProperty("password")
public void setPassword(String password) {
this.password = password;
}
@JsonIgnore
public String getPasswordValue() {
return password;
}
@Override
public String toString() {
return "JacksonTest{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
样品测试方法:
public static void main(String[] args) throws JsonProcessingException {
System.out.println(new JacksonTest("id1","user1","pass"));
System.out.println((new ObjectMapper()).writeValueAsString(new JacksonTest("id1","user1","pass")));
String json ="{\"id\":\"id1\",\"username\":\"user1\",\"password\":\"test\"}";
System.out.println((new ObjectMapper()).readValue(json,JacksonTest.class));
}
要点是使用@JsonIgnore
忽略该属性,并为该属性放置一个自定义设置器和获取器,以便 jackson 将在序列化和反序列化时使用这些方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.