我們在進行開發的過程的難免會進行對象的返回,比如一個用戶對象User,以及一個集合list,Map等等。在這篇博客中我們就是需要學習一下怎么對一個對象中某些屬性的處理。需要補充的一點就是SpringBoot采用的是JackSon進行的序列化以及反序列化,不用我們自己去進行實現,它是自動實現。我們也可以改變它實現的方式或者說我們可以自己去定義序列化和反序列化。當然,因為SpringBoot幫我們做的已是相當好的了,所以基本不用我們自己去進行處理。如果在開發過程中遇到特殊的需求可以自己進行一系列處理。這相對於我們使用SSM開發項目來說就避免了jar包的導入以及設置。
首先我們創建一個用戶類User,如下圖所示:
在這個類里面只有最基礎的屬性:姓名,密碼,生日,描述。
我們統一對類上的一些類注解,屬性注解進行解釋以及描述。
數據隱藏:
我們在進行數據返回的時候肯定是有些屬性不希望前端可以獲取到,或者是某些數據為空的時候前端要求不必進行回傳,那么這時候我們就可以進行屬性的隱藏。
@JsonIgnore:使用在某個屬性上,這樣在序列化和反序列化的時候都會忽略這個屬性,最直接的效果就是返回的JSON屬性是沒有這個屬性的,一般作用於密碼這系列的屬性。
@JsonInclude:使用在某個屬性上,配合它的屬性Value=JsonInclude.Include.NON_NULL,表示的是如果這個屬性的屬性值為空那么在返回前端的時候不可見。
@JsonProperty:使用在某個屬性上,這個注解有兩個作用,第一是修改返回JSON數據的時候key值為value指定值,第二個作用是配合屬性access=JsonProperty.Access.WRITE_ONLY表示屬性只可以進行 序列化而不能進行反序列化,直觀效果就是返回的數據沒有該屬性。
@JsonIgnoreProperties:作用在類聲明處,它和@JsonIgnore注解的區別就是可以對多個屬性作用,直接在value屬性后面使用大括號逗號隔開即可,它的ignoreUnknow屬性為true表示忽略未定義的屬性。
日期:
我們直接使用日期出來的格式必然不是我們想要的,那么我們可以使用注解:@JsonFormat配合上屬性pattern標志事件格式,timezone是時區,local是區域。在這里必須強調的是這是把日期格式化為 String,一般應用在后台向前端傳遞數據,如果是前端的String格式需要解析為日期格式我們可以使用@DateTimeFormat即可。
排序:
有時候為了規范好看我們也需要讓屬性按照一定順序進行排列,這時候我們就使用@JsonPropertyOrder這個注解,它的屬性alphabetic默認值是false,我們設置為true即可。
大概的Json數據處理使用到的注解基本上也就這些了,當然其他功能更強大的注解大家有興趣可以在下去自己學習,查看一個注解的使用方法和效果最好的辦法就是寫Demo。