json常用的注解


json注解:

1、@JsonIgnoreProperties:

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

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

//生成json時將name和age屬性過濾

@JsonIgnoreProperties({"name"},{"age"})

public class  user {

private  String name;

private int age;

}

2、@JsonIgnore(常用注解)

此注解用於屬性或者方法上(最好是屬性上),作用和上面的@JsonIgnoreProperties一樣。

//生成json 時不生成age 屬性

public class user {

private String name;

@JsonIgnore

private int age;

}

 3、@JsonFormat:(常用注解)

此注解用於屬性或者方法上(最好是屬性上),可以方便的把Date類型直接轉化為我們想要的模式,比如:

 

public class User{
@JsonFormat(pattern
= “yyyy-MM-dd HH-mm-ss”)
private Date date;
}

4、@JsonSerialize:

此注解用於屬性或者getter方法上,用於在序列化時嵌入我們自定義的代碼,比如序列化一個double時在其后面限制兩位小數點。

5、@JsonDeserialize:

此注解用於屬性或者setter方法上,用於在反序列化時可以嵌入我們自定義的代碼,類似於上面的@JsonSerialize

6、@Transient

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

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

@Transient

public int getAge() {

 return 1+1;

}

6、@JsonIgnoreType:

標注在類上,當其他類有該類作為屬性時,該屬性將被忽略。

7、@JsonProperty

@JsonProperty 可以指定某個屬性和json映射的名稱。例如我們有個json字符串為{“user_name”:”aaa”},
而java中命名要遵循駝峰規則,則為userName,這時通過@JsonProperty 注解來指定兩者的映射規則即可。這個注解也比較常用。

public class SomeEntity {

    @JsonProperty("user_name")

    private String userName;

}

 

只在序列化情況下生效的注解

1. @JsonPropertyOrder

在將 java pojo 對象序列化成為 json 字符串時,使用 @JsonPropertyOrder 可以指定屬性在 json 字符串中的順序。

2. @JsonInclude

在將 java pojo 對象序列化成為 json 字符串時,使用 @JsonInclude 注解可以控制在哪些情況下才將被注解的屬性轉換成 json,例如只有屬性不為 null 時。

@JsonInclude(JsonInclude.Include.NON_NULL)
這個注解放在類頭上,返給前端的json里就沒有null類型的字段,即實體類與json互轉的時候 屬性值為null的不參與序列化。
另外還有很多其它的范圍,例如 NON_EMPTY、NON_DEFAULT等

 

在反序列化情況下生效的注解

1.@JsonSetter

@JsonSetter 標注於 setter 方法上,類似 @JsonProperty ,也可以解決 json 鍵名稱和 java pojo 字段名稱不匹配的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM