【BUG】Spring Mvc使用Jackson進行json轉對象時,遇到的字符串轉日期的異常處理(JSON parse error: Can not deserialize value of type java.util.Date from String[])


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM