java Json转实体类时间转换失败
2019-07-11 14:50
811 查看
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://www.geek-share.com/detail/2731604988.html
这篇博客可以了解底层报错的原因。
相关文章推荐
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
- json与java实体类的相互转换
- Json字符串和Java实体类之间的相互转换(利用jackson实现)
- Spring AMQP 发送JSON格式的对象及Java 8时间转换成JSON格式
- java 实体类与json 实体类集合与jsonArray的相互转换
- 将JSON数据转换成JAVA的实体类
- JSON字符串转换成java实体类的工具
- JSON-JSON字符串转换成JSON对象、JSON对象数组、java实体类以及保存到List列表中
- java时间类型转换 JsonValueProcessor
- Java转换Json日期/Date(1487053489965+0800)/格式以及js时间格式 Tue Feb 14 2017 14:06:32 GMT+0800
- java的json时间转换为年月日
- 将JSON数据转换成Java的实体类
- oracle 时间类型 与java mybatis.xml 文件配置 resultMap 对应时间类型 JsonConfig 转换oracle里的时间类型
- java的json时间转换为年月日
- java 反射 将json对象转换为实体类
- JSON-JSON字符串转换成JSON对象、JSON对象数组、java实体类以及保存到List列表中
- 使用jackson对Java对象与JSON字符串相互转换的一些总结。
- Java Json 数据下划线与驼峰格式进行相互转换
- VS2012 从字符串转换日期和/或时间时,转换失败