@JsonFormat、@JSONField、@DateTimeFormat的使用以及其區別

--------------------- 本文來自 小糖豆巴拉巴拉 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/qq_28483283/article/details/81326365?utm_source=copy
如若侵犯原作,請立即聯繫博主刪除

三者出處

1、JsonFormat來源於jackson,Jackson是一個簡單基於Java應用庫,Jackson可以輕鬆的將Java對象轉換成json對象和xml文檔,同樣也可以將json、xml轉換成Java對象。Jackson所依賴的jar包較少,簡單易用並且性能也要相對高些,並且Jackson社區相對比較活躍,更新速度也比較快。
2、JSONField來源於fastjson,是阿里巴巴的開源框架,主要進行JSON解析和序列化。
3、DateTimeFormat是spring自帶的處理框架,主要用於將時間格式化。

用法

DateTimeFormat:

因爲其用法比較單一,只用於將字符串格式化成日期,在加入spring以後,直接使用註解@DateTimeFormat(pattern=”yyyy-MM-dd”)即可。@DateTimeFormat 註解有3個可選的屬性:style,pattern和iso


屬性style: 允許我們使用兩個字符的字符串來表明怎樣格式化日期和時間。第一個字符表明了 日期的格式,第二個字符表明了時間的格式。下面的表格中列出了可用的選擇以及相應的輸出的例子:
描述 字符串值 示例輸出

Tables Are Cool
短格式(這是缺省值) SS 8/30/64 11:24 AM
中等格式 MM Aug 30, 1964 11:24:41 AM
長格式 LL August 30, 1964 11:24:41 AM CDT
完整格式 FF Sunday, August 30,1964 11:24:41 AM CDT
使用短橫線省略日期或時間 M- Aug 30, 1964

Pattern: 屬性允許我們使用自定義的日期/時間格式。該屬性的值遵循java標準的date/time格式規範。缺省的該屬性的值爲空,也就是不進行特殊的格式化。通常情況下我們都是使用這個 註解做自定義格式化的。
iso: 基本上用不上,這裏不做講解

JsonFormat

用法 爲在屬性值上 @JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”),如果直接使用 @JsonFormat(pattern=”yyyy-MM-dd”)就會出現2018-08-01 08:00:00的情況, 會相差8個小時,因爲我們是東八區(北京時間)。所以我們在格式化的時候要指定時區(timezone )

JSONField

用法:目前最長的用屬性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)
name:@JSONField(name=”resType”)主要用於指定前端傳到後臺時對應的key值,如果bean中沒有這個註解,則默認前端傳過來的key是field本身,即如果是private String name,name前端對應的key就是name才能對應上。
format @JSONField(format=”yyyy-MM-dd”)主要用於格式化日期,比如前臺傳過來的時間是2018-07-12 17:44:08,但是通過這個註解,你存到數據庫的時間就是2018-07-12 00:00:00.

區別

網上有說DateTimeFormat主要用於後臺接受前臺的值,而JsonFormat主要用於後臺傳值到前臺,其實都一個用,沒差的。其他的區別就是速度的問題了,這裏有一篇其對數據的處理速度的對比,供大家參考。
https://github.com/eishay/jvm-serializers/wiki

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章