Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type jav

Posted 粤B_Liao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type jav相关的知识,希望对你有一定的参考价值。

1.问题排查

- 项目配置

  • springboot 2.1
  • maven配置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
这篇博客可以了解底层报错的原因。


以上是关于Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type jav的主要内容,如果未能解决你的问题,请参考以下文章

Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type jav

当使用 Spring MVC for REST 时,如何让 Jackson 漂亮地打印呈现的 JSON?

spring mvc json 直接把一个对象转换成json格式输出到jsp页面

Spring MVC 接收的 JSON 嵌套对象的 Spring Boot JACKSON 配置

Spring MVC框架 学习笔记总结

Spring mvc jackson json mapper-如何将unicode编码应用于json响应中的特殊字符