1. 程式人生 > 其它 >@JSONField、@JsonFormat及@DateTimeFormat的入參與出參

@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