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

相关推荐
王王碎冰冰3 小时前
基于 Vue3@3.5+跟Ant Design of Vue 的二次封装的 Form跟搜索Table
前端·vue.js
天蓝色的鱼鱼4 小时前
Element UI 2.X 主题定制完整指南:解决官方工具失效的实战方案
前端·vue.js
我是日安4 小时前
从零到一打造 Vue3 响应式系统 Day 8 - Effect:深入剖析嵌套 effect
前端·vue.js
DevUI团队4 小时前
🚀 MateChat V1.8.0 震撼发布!对话卡片可视化升级,对话体验全面进化~
前端·vue.js·人工智能
好好好明天会更好4 小时前
pinia从定义到运用
前端·vue.js
代码小学僧4 小时前
Vite 项目最简单方法解决部署后 Failed to fetch dynamically imported Error问题
前端·vue.js·vite
后端小张5 小时前
基于飞算AI的图书管理系统设计与实现
spring boot
东坡白菜5 小时前
SSE 实现 AI 对话中的流式输出
javascript·vue.js
猩兵哥哥9 小时前
前端面向对象设计原则运用 - 策略模式
前端·javascript·vue.js
EMT10 小时前
在 Vue 项目中使用 URL Query 保存和恢复搜索条件
javascript·vue.js