json序列化||反序列化過濾某些屬性 之@jsonignore註解
Jackson相關:
使用Jackson相關的註解時一定要注意自己定義的屬性命名是否規範。
命名不規範時會失去效果。(例如Ename ,Eage 為不規範命名。“nameE”,“ageE”為規範命名)我在此處掉坑半個小時。至於命名規範,大家自己搜尋。其實不要太奇葩的命名都是可以得。
如果使用@JsonIgnore註解不起效時請注意一下你的屬性名字是否規範
1、@JsonIgnoreProperties
此註解是類註解,作用是json序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。
寫法將此標籤加在model 類的類名上 ,可以多個屬性也可以單個屬性
//生成json時將name和age屬性過濾 @JsonIgnoreProperties({"name"},{"age"}) public class user { private String name; private int age; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2、@JsonIgnore
此註解用於屬性或者方法上(最好是屬性上),作用和上面的@JsonIgnoreProperties一樣。
生成json 時不生成age 屬性 public class user {
private String name;
@JsonIgnore
private int age;
}
3、@JsonFormat
此註解用於屬性或者方法上(最好是屬性上),可以方便的把Date型別直接轉化為我們想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
4、@JsonSerialize
此註解用於屬性或者getter方法上,用於在序列化時嵌入我們自定義的程式碼,比如序列化一個double時在其後面限制兩位小數點。
5、@JsonDeserialize
此註解用於屬性或者setter方法上,用於在反序列化時可以嵌入我們自定義的程式碼,類似於上面的@JsonSerialize
6、@Transient
@[email protected]�射,ORM框架將忽略該屬性;
如果一個屬性並非資料庫表的欄位對映,就務必將其標示為@Transient,否則ORM框架預設其註解為@Basic;
//表示該欄位在資料庫表中沒有
@Transient
public int getAge() {
return 1+1;
}