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

相关推荐
萌萌哒草头将军1 分钟前
🏖️ 舒服,原来写代码还可以这么享受😎!沉浸式敲代码神器!
javascript·vue.js·react.js
梁云亮11 分钟前
SpringBoot中缓存@Cacheable出错
spring boot·缓存
邹荣乐32 分钟前
Vue.js项目中全面解析定义全局变量的常用方法与技巧
前端·javascript·vue.js
大明8833 分钟前
table组件表头分离如何同步列宽
前端·vue.js
挽淚33 分钟前
从原生JS到现代前端框架:提升开发效率的转变
javascript·vue.js
springfe010135 分钟前
前端API层架构设计
前端·vue.js
Dignity_呱42 分钟前
玩转Vue插槽:从基础到高级应用场景(内含为何Vue 2 不支持多根节点)
前端·vue.js·面试
迢迢星万里灬1 小时前
Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析
java·spring boot·spring·面试·mybatis·spring mvc
代码老y1 小时前
基于springboot的图书管理系统的设计与实现
java·vue.js·spring boot·后端·毕业设计·课程设计·个人开发
ross1 小时前
更新已打包好的 Spring Boot JAR 文件中的 class 文件
spring boot·后端·jar