在進行序列化如何過濾為null的屬性,empty的屬性,或者default的屬性。
一、全局注冊 objectMapper.setSerializationInclusion(Include.ALWAYS);
二、具體類上打注解
@JsonSerialize(include = Inclusion.NON_NULL) public class MyTypeWithoutNulls { public String mayHaveValue; // will not be included if value is null
}
三、具體屬性上打注解
@JsonInclude(Include.NON_NULL) public Date getBirthday() { return birthday; }
測試用例
public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }
//將該標記放在屬性上,如果該屬性為NULL則不參與序列化 //如果放在類上邊,那對這個類的全部屬性起作用 //Include.Include.ALWAYS 默認 //Include.NON_DEFAULT 屬性為默認值不序列化 //Include.NON_EMPTY 屬性為 空(“”) 或者為 NULL 都不序列化 //Include.NON_NULL 屬性為NULL 不序列化
@JsonInclude(Include.NON_NULL) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
//測試方法
ObjectMapper mapper = new ObjectMapper(); User user = new User(1,"jack",null); String outJson = mapper.writeValueAsString(user); System.out.println(outJson); //測試結果 //{"id":1,"name":"jack"}
ObjectMapper mapper = new ObjectMapper(); //通過該方法對mapper對象進行設置,所有序列化的對象都將按改規則進行系列化 //Include.Include.ALWAYS 默認 //Include.NON_DEFAULT 屬性為默認值不序列化 //Include.NON_EMPTY 屬性為 空(“”) 或者為 NULL 都不序列化 //Include.NON_NULL 屬性為NULL 不序列化
mapper.setSerializationInclusion(Include.NON_NULL); User user = new User(1,"",null); String outJson = mapper.writeValueAsString(user); System.out.println(outJson);