天天看點

使用【JSON.parseArray】反序列化yyyy-MM-dd HH:mm:ss格式日期失敗

異常

com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2022-06-21 00:00:00": not a valid representation (error: Failed to parse Date value '2022-06-21 00:00:00': Cannot parse date "2022-06-21 00:00:00": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSZ', parsing fails (leniency? null))
           

解決方案

在你反序列化的java對象中Date類型的屬性加上注解

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

擴充知識

yyyy-MM-dd’T’HH:mm:ss.SSS Z這種格式是ISO8601的規定的時間格式

其中T表示日期跟時間的分隔

SSS表示毫秒數

Z表示0時區

如果我們通過swagger構造入參時間屬性時,可以通過浏覽器控制台

new Date().getTime()

,這個将會傳回一個時間戳(從1970年1月1日到現在的毫秒數),我們可以直接把這個數字作為時間屬性,後端會将其轉為對應的日期對象,比構造那麼一個複雜格式的字元串要快速很多