[英]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.