@JSONField、@JsonFormat及@DateTimeFormat的入參與出參
概述
大多時候註解不會用、用錯,可能是你不瞭解這個註解導致的,有時候做測試得出的結論也會是片面的,建議根據其所屬jar包看看官方文件,來理解、找解決方案
@JSONField
結束@JSONField之前,介紹一下fastjson,fastjson是阿里的開源解析庫,支援將Java Bean序列化為JSON字串,也可以將JSON字串反序列化為Java Bean
JSONField可以用在欄位上或者getter/setter方法上,它的作用有很多,包括,日期格式化,指定不序列化的欄位,指定欄位的順序
對於日期的格式化,在註解上寫一下就好了,它就會按照你指定的格式輸出
@JSONField(format="yyyyMMdd")public Date date;
@JsonFormat
@JsonFormat是jackson提供的一個註解,主要用來控制日期和日曆型別的輸出格式,它可以作用在欄位上,也可以作用在getter方法上。當然你也可以為它指定時區
比如
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date createdDate;
輸出:
{ ... , "currentDate":"2016-12-18", ...}
@DateTimeFormat
@DateTimeFormat是SpringMVC提供的一個註解,作用:格式化前臺的輸入資料,雖然@JSONField、@JsonFormat也都可以做到,而且@DateTimeFormat不好的一點就是,從後端讀取資料出來的話,是以long型別輸出的,不會格式化為你想要的型別輸出.
大概總結一下吧
入參的化,其實不用太擔心,無論你使用的是@JSONField、@JsonFormat及@DateTimeFormat它都將會yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss轉換為yyyy-MM-dd或yyyy-MM-dd HH:mm:ss儲存到資料庫中
有時候,你前端傳yyyy-MM-dd HH:mm:ss 而使用@JSONField、@JsonFormat及@DateTimeFormat指定為yyyy-MM-dd,也能正確的轉換為yyyy-MM-dd HH:mm:ss存到資料庫中,我想應該是fastJson、jackson、springMVC底層做了轉換,以前端傳過來的資料為主
對於出參,@JSONField、@JsonFormat都可以轉化為你想要的日期格式,而@DateTimeFormat對於格式為yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss都以long型別輸出
轉載:https://blog.csdn.net/weixin_40598838/article/details/108965891