写在前面

最近,有个小伙伴问我:我在SpringBoot项目中,使用@JsonFormat注解标注LocalDateTime类型的字段时,LocalDateTime反序列化失败,这个我该怎么处理呢?别急,我们一起来解决这个问题。

小伙伴的疑问

解答小伙伴的疑问

我们可以使用SpringBoot依赖中的@JsonFormat注解,将前端通过json传上来的时间,通过@RequestBody自动绑定到Bean里的LocalDateTime成员上。具体的绑定注解使用方法如下所示。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")

出现问题的版本

我使用Spring Boot 2.0.0 时,直接在字段上加上@JsonFormat 注解就可以完成数据的绑定。

而在使用Spring Boot 1.5.8时,只在字段上加上@JsonFormat 注解,在数据绑定时无法将Date类型的数据自动转化为字符串类型的数据。

解决方法

1.将SpringBoot版本升级为2.0.0及以上。

2.如果不升级SpringBoot版本,可以按照下面的方式解决问题。

不升级SpringBoot版本,添加Jackson对Java Time的支持后,就能解决这个问题。

在pom.xml中添加:

<dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

添加JavaConfig,自动扫描新添加的模块:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import com.fasterxml.jackson.databind.ObjectMapper;@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper serializingObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();objectMapper.findAndRegisterModules();return objectMapper;}
}

或者在application.properties添加如下配置:

spring.jackson.serialization.write-dates-as-timestamps=false

或者只注册JavaTimeModule,添加下面的Bean

@Bean
public ObjectMapper serializingObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);objectMapper.registerModule(new JavaTimeModule());return objectMapper;
}

重磅福利

微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!

另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!

写在最后

如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫!

localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?相关推荐

  1. 为啥你用@JsonFormat注解反序列化LocalDateTime总失败?

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  2. localdatetime转化为date_LocalDateTime用法(jdk1.8 )

    前言 最近看别人项目源码,发现Java8新的日期时间API很方便强大,所以转载该入门介绍博客,记录一下. 使用新时间日期API的必要性 在java8以前,或许: 当你在做有关时间日期的操作时,你会想到 ...

  3. 解决json字符串转为对象时LocalDateTime异常问题

    1 出现异常 这次的异常出现在前端向后端发送请求体里带了两个日期,在后端的实体类中,这两个日期的格式都是JDK8中的时间类LocalDateTime.默认情况下,LocalDateTime只能解析20 ...

  4. @RequestBody配合@JsonFormat注解实现字符串自动转换成Date

    2018年08月28日 16:41:15 混合动力火锅 阅读数:440 在controller中使用@RequestBody可以自动将字符串转换成int或者将int转换成字符串,但是Date类型则不行 ...

  5. @JsonInclude、@JsonIgnore和@JsonFormat注解

    一.@JsonIgnore: 1.作用: 在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 一般标记在属性或者方法上,在返回的json数据就不包含该属性 2.场景模 ...

  6. Date入参和出参格式_@DateTimeFormat 和 @JsonFormat 注解

    1. 准备 定义一个pojo,它有一个 java.util.Date 类型的属性 date. import java.util.Date;           public class DateVo ...

  7. @DateTimeFormat@JsonFormat注解详解

    场景 @JsonFormat注解是属于Jackson的一个时间格式化注解,用于格式化时间. 可以在入参出参的时候就将时间格式化好. @DateTimeFormat注解是spring的,它可以帮助我们把 ...

  8. java对象转json格式化_Java对象转json JsonFormat注解

    写在前面,首先,我用的java转json序列化的工具是java开源的jackson. 今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到 ...

  9. @JsonFormat注解未设置时区导致的返回时间错误

    @JsonFormat未设置时区而导致返回错误时间 有时候我们使用 @JsonFormat注解时会忽略设置时区,这样有可能就会导致我们转换的时间与我们从数据库查出的真确时间有差别 这样有可能会导致时间 ...

最新文章

  1. python拆堆和堆叠的操作_堆叠框架的Python / Tkinter退出按钮
  2. android调试更换模拟器,在模拟器上调试 Android 磨损
  3. python学习笔记(05)
  4. vue+iview 设置全局的url以及跨越问题
  5. 区块链预言机(5)预言机原理
  6. APDPlat的系统启动和关闭流程剖析
  7. jst获取不到springmvc中model数据
  8. 知乎数据集成平台建设实践
  9. mysql 存取字符集_MySQL字符集设置—MySQL数据库乱码问题详解
  10. nodejs+php+aes加密解密,php,crypto_php与nodejs的加密数据互通,php,crypto,node.js - phpStudy...
  11. oracle 拉链表 计算和,Oracle拉链表和流水表如何按照时间匹配求新的计算项
  12. 【机器学习】一文详尽系列之EM算法
  13. JavaScript (十九):DOM对象其它操作
  14. 什么是迁移学习?迁移学习的实现方法与工具分析
  15. R中读取Excel大文件
  16. Oozie安装ExtJs教程
  17. 【Proteus仿真】 51单片机利用定时器制作简易SPWM波形输出
  18. AFDX(ARINC664)的交换机规范
  19. Django文档是如何组织的?
  20. 计算机黑屏 风扇转,打开电脑黑屏,但风扇还在转,为什么?

热门文章

  1. legacy bios与uefi两种模式安装windows8操作系统的方法
  2. eth0,eth1,eth2,lo是什么
  3. KDE/QT vs GNOME/GTK
  4. 【Python】如何在文件夹里批量分割图片?
  5. 【云炬大学生创业基础笔记】第1章第3节 什么是创业测试
  6. [云炬创业基础笔记] 第三章测试10~12
  7. 通过History Trends Unlimited通过统计台式机Chrome浏览器Top10网页历史访问量(2021.11.23)
  8. FFTW在VS中集成与测试详解
  9. Android常用的开源框架
  10. bootsect.s文件阅读问题集