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的配置中设置全局的日期格式。

相关推荐
m0_3801138412 小时前
补单系统搭建及源码分享
数据库·spring boot·mybatis
练习时长一年13 小时前
Spring配置类的演化
java·spring boot·spring
军军君0113 小时前
数字孪生监控大屏实战模板:智能业务大数据监管平台
css·vue.js·elementui·typescript·前端框架·echarts·less
阿丰资源13 小时前
基于SpringBoot+MySQL的社区团购系统设计与实现(附源码+文档+数据库,直接运行)
数据库·spring boot·mysql
阿丰资源13 小时前
基于SpringBoot+MySQL的网上订餐系统(附源码)
spring boot·后端·mysql
代码不加糖14 小时前
0基础搭建前后端分离项目:实现菜单与界面左右布局
java·前端·javascript·mysql·elementui·mybatis
希望永不加班14 小时前
SpringBoot 敏感数据脱敏(序列化层)
java·spring boot·后端·spring
希望永不加班14 小时前
SpringBoot 数据库索引优化:慢查询分析
java·数据库·spring boot·后端·spring
jiayong2315 小时前
第 38 课:任务列表里高亮当前正在查看详情的任务
开发语言·前端·javascript·vue.js·学习
搬搬砖得了16 小时前
Vue 响应式对象异步赋值作为 Props:二次渲染问题与组件设计哲学
前端·vue.js