国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
關(guān)于@JsonFormat和@DateFormat問題

今天在調(diào)試web應(yīng)用的時(shí)候,碰到時(shí)間序列化和反序列化問題,網(wǎng)上查的資料一般都是關(guān)于 @JsonFormat 和 @DateFormat

網(wǎng)上好多說的是 @JsonFormat 是 把 對象轉(zhuǎn) string 即序列化起作用,@DateFormat 是string 轉(zhuǎn) 對象 即反序列化起作用,也有的說 @JsonFormat 序列化和反序列化都有作用。

其實(shí)問題不是這個(gè)簡單,到底誰起作用是有條件的。

1、當(dāng)前端請求 content-Type 為 application/json 時(shí)

  請求到后端 string 轉(zhuǎn) 對象 是 @JsonFormat 起作用。

domain文件

controller層

 

postman發(fā)請求。

從上面可以看出,后端反序列化出錯(cuò)

現(xiàn)在我把注解換下,如下

public class Test {    @JsonFormat(pattern = "yyyy-MM-dd")//    @DateTimeFormat(pattern = "yyyy-MM-dd")    private Date date1;    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date date2;    public Date getDate1() {        return date1;    }    public void setDate1(Date date1) {        this.date1 = date1;    }    public Date getDate2() {        return date2;    }    public void setDate2(Date date2) {        this.date2 = date2;    }}

此時(shí)后端能調(diào)通,且返回的結(jié)果時(shí)間格式是正確的,我們可以發(fā)現(xiàn)這種情況下@JsonFormat在反序列化和序列化過程都起作用了。

2、當(dāng)請求類型:content-Type 為 form-data

此時(shí)domain還和上面一樣,請求url換func1,因?yàn)檫@里content-Type 為 form-data

把注解換成如下

public class Test {//    @JsonFormat(pattern = "yyyy-MM-dd")    @DateTimeFormat(pattern = "yyyy-MM-dd")    private Date date1;//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date date2;    public Date getDate1() {        return date1;    }    public void setDate1(Date date1) {        this.date1 = date1;    }    public Date getDate2() {        return date2;    }    public void setDate2(Date date2) {        this.date2 = date2;    }}

    此時(shí)能調(diào)通,string 轉(zhuǎn) 對象 @DateFormat起作用。

把domain改為:

public class Test {    @JsonFormat(pattern = "yyyy-MM-dd")    @DateTimeFormat(pattern = "yyyy-MM-dd")    private Date date1;    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date date2;    public Date getDate1() {        return date1;    }    public void setDate1(Date date1) {        this.date1 = date1;    }    public Date getDate2() {        return date2;    }    public void setDate2(Date date2) {        this.date2 = date2;    }}

結(jié)果:

此時(shí) 前端傳后端string 轉(zhuǎn) 對象是@DateFormat 起作用,后端傳前端 對象 轉(zhuǎn)string 是@DateFormat起作用。

總結(jié):
1、@JsonFormat有序列化(對象轉(zhuǎn)string)和反序列化(string轉(zhuǎn)對象)的作用。
2、當(dāng)前端數(shù)據(jù)類型為application/json時(shí)@JsonFormat一個(gè)注解就可以起到序列化和反序列化的左右。
3、當(dāng)前端數(shù)據(jù)類型為multipart/form-data是,前端傳后端 string轉(zhuǎn)date @DateFormat起作用,后端傳前端 @JsonFormat起作用。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java 關(guān)于時(shí)間返回結(jié)果與參數(shù)的注解@DatetimeFormat和@JsonFormat
LocalDateTime去掉T
日期轉(zhuǎn)換工具類
Java常用的時(shí)間工具類DateTimeUtils.java對常用的時(shí)間操作方法總結(jié)
問題:Cannot deserialize value of type `java.util.Date` from String “2020
Swift 日期轉(zhuǎn)換
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服