Json中相關注解解釋說明


  @JsonProperty用法:

@JsonProperty 此注解用於屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty(“name”),

這樣得到結果

{“name”:“張三”}

 

  @jsonSerialize用法:

實際開發中,我們一定遇到過這樣的問題:前端顯示和后台存儲數據單位不統一,而且各有各自的理由,統一不了,那就轉換吧。

每次返回給前端時再轉換一遍,返回給前端的json數據,在后端里定義的往往是一個對象,如何做到優雅的轉換呢?只需兩步

1. 寫一個負責轉換的類,里面寫好規則

 

2. 在實體類上需要裝換的字段上加上注解

這樣就成功將Date類型轉換為Long類型輸出了。

@JsonSerialize注解,主要用於數據轉換,該注解作用在該屬性的getter()方法上。

 

 

  @JsonIgnoreProperties

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

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

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

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

public class  user {

private  String name;

private int age;

}


  @JsonIgnore

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

生成json 時不生成age 屬性

public class user {

private String name;

@JsonIgnore

private int age;

}

  @JsonFormat

此注解用於屬性或者方法上(最好是屬性上),可以方便的把Date類型直接轉化為我們想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)

 

  @Transient

ORM框架將忽略該屬性;

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

 

  @JsonInclude

前端的同事要求說盡量不要有null,可有為空串“” 或者 0 或者 [], 但盡量不要nul,

所以@JsonInclude(Include.NON_NULL) 這個注解放在類頭上就可以解決。 實體類與json互轉的時候 屬性值為null的不參與序列化

  

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

@JsonInclude(Include.NON_NULL)
public class WithdrawDetail implements Serializable {

}

 

  實際效果

 

 

全局配置

springMVC.xml

<!-- 默認的注解映射的支持 比如requestMapper之類的 -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="serializationInclusion"> 
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> 
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>

 

--------------spring boot 的配置

只在配置文件加上一個配置

spring.jackson.default-property-inclusion=non_null

 


免責聲明!

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



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