1.問題排查
項目配置
- springboot 2.1
- Mave配置Jackson依賴
出現的場景
- 服務端通過springmvc寫了一個對外的接口,查詢數據中的表,表中有一個字段屬性是時間戳,返回一個json字符串,其中該json帶有日期,格式為yyyy-MM-dd HH:mm:ss
- 客戶端調用該http接口,指定返回值為一個Vo,Vo中日期的字段為Date類型
- 客戶端調用該接口后拋異常了。報錯信息如下:
feign.codec.DecodeException: JSON parse error: Can not deserialize value of type java.util.Date from String "2018-03-07 16:18:35": not a valid representation (error: Failed to parse Date value '2018-03-07 16:18:35': Can not parse date "2018-03-07 16:18:35Z": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS'Z'', parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2018-03-07 16:18:35": not a valid representation (error: Failed to parse Date value '2018-03-07 16:18:35': Can not parse date "2018-03-07 16:18:35Z": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS'Z'', parsing fails (leniency? null))
2.解決方法
因為數據庫中存在一個create_time字段,屬性是timestamp,服務器端查詢數據庫並把字段映射到定義的Vo中出現了格式問題,所以在Vo中把createTime添加@JsonFormat注釋就可以完成時間字段映射的格式問題。
@JsonFormat( pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
3.異常的原因
這篇博客可以了解底層報錯的原因。
https://blog.csdn.net/qq906627950/article/details/79503801
