1. 程式人生 > >json過濾某些屬性 之@jsonignore

json過濾某些屬性 之@jsonignore

pro 自定義 嵌入 date類 ret 使用 prop 命名 set

Jackson相關:

使用Jackson相關的註解時一定要註意自己定義的屬性命名是否規範。
命名不規範時會失去效果。(例如Ename ,Eage 為不規範命名。“nameE”,“ageE”為規範命名)我在此處掉坑半個小時。至於命名規範,大家自己搜索。其實不要太奇葩的命名都是可以得。

如果使用@JsonIgnore註解不起效時請註意一下你的屬性名字是否規範

1、@JsonIgnoreProperties

此註解是類註解,作用是json序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。

寫法將此標簽加在model 類的類名上 ,可以多個屬性也可以單個屬性

1 //生成json時將name和age屬性過濾
2 @JsonIgnoreProperties({"name"},{"age"}) 3 public class user { 4 private String name; 5 private int age; 6 }

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

ORM框架將忽略該屬性;
如果一個屬性並非數據庫表的字段映射,就務必將其標示為@Transient,否則ORM框架默認其註解為@Basic;

//表示該字段在數據庫表中沒有

@Transient 
public int getAge() { 
  return 1+1; 
}

json過濾某些屬性 之@jsonignore