当前位置:   article > 正文

前端报错JSON parse error: Cannot deserialize value of type `java.sql.Date`

json parse error: cannot deserialize value of type `java.sql.date` from stri

在进行前端向后端传时间参数时,前端竟然报了错误,错误如下所示:

"timestamp":1611115044698,"status":400,"error":"Bad Request","message":"JSON parse error: Cannot deserialize value of type `java.sql.Date` from String \"2021-01-20T03:57:04.000Z\": expected format \"yyyy-MM-dd HH:mm:ss\"; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException:
  • 1

这个错误之前在后端也出现过。但是明明已经解决了,但是为啥还是为报错呢。我一脸懵逼的对于这个问题没有任何方向。但最终还是直接就在百度上搜索这个错误了,确实也看到了很多人都遇到过这样的错误,但是我尝试了根据他们的博客尝试了很多种方法,结果还是报错。转眼间,一上午过去了,我还在纠结怎么没是生效呢。最后经过下午的折腾,才发现是日期格式的问题,在后端的日期格式上我用了java.sql.Date,后来我改成了Date就不报错了,那究竟是什么原因导致了这个错误呢,请继续阅读,答案就在下方…

一、java.sql.Date和Date的区别

简单来说,日期为java.sql.Date期运行结果就是只有年月日没有时分秒。但是在前端传过去的日期格式为“yyyy-MM-dd HH:mm:ss” ,所以就导致了格式转化失败的错误。但如果用Date就不会只有年月日,会将前端传过去的日期格式全部显示出来。
关于java.sal.Date包下给出三个与数据库相关的日期时间类型:
Date : 表示日期,只要年月日,没有时分秒。(总结为会丢失时间)
Time:会丢失日期
Timestamp:表示时间戳,有年月日时分秒,以及毫秒

java日期类型用Date时,注意引入的包是否正确:
Date引入的包如下:

import java.util.Date;
  • 1

在此之前我也用尝试过用Date,但是爆红,不能引入期依赖,也尝试过用DateTime因为觉得是日期时间,但是都不能引入到代码中。但是这次竟然引入成功了,究其原因是包导入的问题。所以在引入任何东西前一定要注意其导入的包是否正确。

二、数据库表数据类型

引起这错误,之前我也写过一篇博客。是因为数据库表数据类型设计的问题。部分字段用了bit类型,结果前端传来的字段太长了也会导致报错,这时候把数据类型或者其长度修改下即可。还有就是bit在实体层中最好用int类型,不然容易报错。大家可以查下关于int和bit的区别。

三、总结

在报错时,自己没有通过多方面的去思考来进行解决问题。在通过直接搜索报错问题还是不能解决此问题时,应该根据问题去定义是什么地方出错了,不该纠结于后端接口测通了一定没有隐患的错误。可以先在前端输入看输出格式是否正确,最后前后端一条线调错时,看问题是否在后端也报错。如果报错,迅速根据报错信息定位,之后直接去查java.sql.Date即可找到解决问题的源头,而不是就只抓住报错信息一味百度百度。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/813808
推荐阅读
相关标签
  

闽ICP备14008679号