天天看点

使用【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日到现在的毫秒数),我们可以直接把这个数字作为时间属性,后端会将其转为对应的日期对象,比构造那么一个复杂格式的字符串要快速很多