Springboot框架下Date类型数据上传问题(重要)

https://blog.csdn.net/pp_fzp/article/details/79588374

问题场景:

使用Springboot框架搭建服务,实现如下需求, 服务端使用实体类接收客户端上传具有相同结构的json数据信息,其中实体类的属性字段中包含java.util.Date类型的属性字段。

问题描述:

1.由客户端上传的json数据中Date字段格式为“2016-08-15 17:00:00”,测试调用时报如下错误:

{
  "timestamp": 1521217111334,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.http.converter.HttpMessageNotReadableException",
  "message": "JSON parse error: Can not deserialize value of type java.util.Date from String \"2016-08-15 17:00:00\": not a valid representation (error: Failed to parse Date value '2016-08-15 17:00:00': Can not parse date \"2016-08-15 17:00:00\": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String \"2016-08-15 17:00:00\": not a valid representation (error: Failed to parse Date value '2016-08-15 17:00:00': Can not parse date \"2016-08-15 17:00:00\": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null))\n at [Source: java.io.PushbackInputStream@6317f037; line: 9, column: 11] (through reference chain: com.consmation.iwebmapserver.projectserver.model.BusGeologicalDrilling[\"fixdt\"])",
  "path": "/MobileServer/SaveGeologicalDrillingInfo"
}
该错误大意为:不能解析日期\“2016-08-15 17:00:00 \”:虽然它似乎符合格式的yyyy-MM-dd 'HH:mm:ss.SSS”

2.此时将上传的Date数据修改为 2016-08-15T16:00:00 ,程序虽不再报错误,但是通过跟踪程序实体类发现,该字段的值为:2016-08-16 1:00:00,不符合我们所上传的日期。

错误分析:

1. Springboot使用的默认json解析框架是jackjson框架

2. jackjson解析框架在解析实体类里面是date数据类型的数据时的默认格式是:UTC类型,即yyyy-MM-dd'T'HH:mm:ss.SSS 并且默认为+8时区,即时间基础上加8小时

解决方案:

1. 在实体Date类型的字段上使用@JsonFormat注解格式化日期 

@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
2. 通过下面方式取消timestamps形式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
备注:

如果项目中使用json解析框架为fastjson框架,则可使用如下解决方法:
1. 在实体字段上使用@JsonFormat注解格式化日期
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")

--------------------- 
作者:北辰之北灬 
来源:CSDN 
原文:https://blog.csdn.net/pp_fzp/article/details/79588374 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值