springboot+vue+elementui保存时间类型数据报错JSON parse error

1.目前环境条件:

①mysql数据库中存储的时间字段类型为:datetime

②:springboot中存储的类型为:LocalDateTime

③前端代码:

javascript 复制代码
<el-col :span="24">
        <el-form-item>
            <div slot="label">运维日期<font color="red">*</font></div>
            <el-date-picker
            v-model="form.itemTime"
            value-format="yyyy-MM-dd HH:mm:ss "
            class="filter-item"
            type="daterange"
            range-separator="至"
            start-placeholder="运维开始日期"
            end-placeholder="运维结束日期"
            :clearable="false"
            />
          </el-form-item>
      </el-col>

2.报错的问题:

java 复制代码
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String "2024-03-06": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2024-03-06' could not be parsed at index 10; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2024-03-06": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2024-03-06' could not be parsed at index 10

后端报错的问题:

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String "2024-03-06": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2024-03-06' could not be parsed at index 10; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDateTime` from String "2024-03-06": Failed to deserialize java.time.LocalDateTime: (java.time.format.DateTimeParseException) Text '2024-03-06' could not be parsed at index 10

3.解决方法:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField("om_modify_time")
private LocalDateTime modifyTime;

在实体类字段上加上:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

4.原因:

org.springframework.http.converter.HttpMessageNotReadableException 异常是Spring框架在尝试将HTTP请求体中的JSON数据转换为Java对象时抛出的异常。该异常指出在解析JSON时遇到了问题。

在这个具体的例子中,异常信息表明在尝试将字符串 "2024-03-06" 反序列化为 java.time.LocalDateTime 类型时失败了。java.time.LocalDateTime 需要一个完整的日期和时间(如 yyyy-MM-dd'T'HH:mm:ss),而 "2024-03-06" 只提供了一个日期,没有提供时间信息,因此无法被正确解析。

要解决这个问题,你有几个选项:

  1. 更改JSON数据:确保发送到服务器的JSON数据包含完整的日期和时间信息。

  2. 使用java.time.LocalDate代替java.time.LocalDateTime :如果你的字段只包含日期信息,那么应该使用 LocalDate 类型而不是 LocalDateTime

  3. 自定义日期格式 :如果你不能更改JSON数据,并且确实需要解析这种格式的日期,你可以使用 @JsonFormat 注解来指定自定义的日期格式。然而,请注意,这仅适用于 LocalDate,因为 LocalDateTime 需要时间信息。

  4. 使用@DateTimeFormat :如果你使用的是Spring MVC的 @RequestParam@ModelAttribute,你可以使用 @DateTimeFormat 注解来指定日期格式。

  5. 全局配置:在Jackson的配置中设置全局的日期格式。

相关推荐
qb5 小时前
vue3.5.18源码-编译-入口
前端·vue.js·架构
虫无涯5 小时前
【分享】基于百度脑图,并使用Vue二次开发的用例脑图编辑器组件
前端·vue.js·编辑器
NewChapter °5 小时前
如何通过 Gitee API 上传文件到指定仓库
前端·vue.js·gitee·uni-app
练习时长两年半的Java练习生(升级中)5 小时前
从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
前端·javascript·vue.js·学习·web
JosieBook7 小时前
【SpringBoot】21-Spring Boot中Web页面抽取公共页面的完整实践
前端·spring boot·python
刘一说7 小时前
Spring Boot+Nacos+MySQL微服务问题排查指南
spring boot·mysql·微服务
小高0078 小时前
🧙‍♂️ 老司机私藏清单:从“记事本”到“旗舰 IDE”,我只装了这 12 个插件
前端·javascript·vue.js
EveryPossible8 小时前
终止异步操作
前端·javascript·vue.js
Stringzhua8 小时前
setup函数相关【3】
前端·javascript·vue.js
neon12049 小时前
解决Vue Canvas组件在高DPR屏幕上的绘制偏移和区域缩放问题
前端·javascript·vue.js·canva可画