为啥你用@JsonFormat注解反序列化LocalDateTime总失败?
点击上方蓝色“冰河技术”,关注并选择“设为星标”
持之以恒,贵在坚持,每天进步一点点!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
最近,有个小伙伴问我:我在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,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
为啥你用@JsonFormat注解反序列化LocalDateTime总失败?相关推荐
- localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?
写在前面 最近,有个小伙伴问我:我在SpringBoot项目中,使用@JsonFormat注解标注LocalDateTime类型的字段时,LocalDateTime反序列化失败,这个我该怎么处理呢?别 ...
- @RequestBody配合@JsonFormat注解实现字符串自动转换成Date
2018年08月28日 16:41:15 混合动力火锅 阅读数:440 在controller中使用@RequestBody可以自动将字符串转换成int或者将int转换成字符串,但是Date类型则不行 ...
- Date入参和出参格式_@DateTimeFormat 和 @JsonFormat 注解
1. 准备 定义一个pojo,它有一个 java.util.Date 类型的属性 date. import java.util.Date; public class DateVo ...
- @DateTimeFormat@JsonFormat注解详解
场景 @JsonFormat注解是属于Jackson的一个时间格式化注解,用于格式化时间. 可以在入参出参的时候就将时间格式化好. @DateTimeFormat注解是spring的,它可以帮助我们把 ...
- java对象转json格式化_Java对象转json JsonFormat注解
写在前面,首先,我用的java转json序列化的工具是java开源的jackson. 今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到 ...
- @JsonFormat注解未设置时区导致的返回时间错误
@JsonFormat未设置时区而导致返回错误时间 有时候我们使用 @JsonFormat注解时会忽略设置时区,这样有可能就会导致我们转换的时间与我们从数据库查出的真确时间有差别 这样有可能会导致时间 ...
- @JsonFormat注解和时区问题
在程序开发中会因为时区的不同,会发生时间类型的数据出现问题.记录@JsonFormat 注解在使用过程中应该注意的问题. 文章目录 时区概述 中国的默认时区 TimeZone获得本地时区 格林尼治时间 ...
- SpringBoot - @JsonFormat注解详解
写在前面 @JsonFormat注解是一个时间格式化注解,用于格式化时间. 比如存储在MYSQL中的数据是dateTime类型,将数据获取以后封装到实体类中的时候,就会变成英文的时间格式(Wed Ju ...
- jsonformat注解失效
jsonformat注解失效原因有许多 我失效的原因是mapper中的对应没写对 如: <!-- 根据条件查询歌手信息 --><select id="getSinger&q ...
最新文章
- Cordova:安卓启动页图片变形
- Jenkins执行批处理文件失败
- C语言及程序设计初步例程-37 循环嵌套
- 学习笔记-JMeter 进行接口压力测试
- 【android】读取/res/raw目录下的文件
- Warning: bind(): React component methods may only be bound to the component instance. See ...
- 词嵌入生成词向量_使用词嵌入创建诗生成器
- python 24点题目分析_24点游戏的递归解法和Python实现
- JavaScript里的 深浅拷贝
- 【NOI2003】智破连环阵
- 双月报8.24-10.23
- php WEB报表工具的设计
- Latex参考文献插入
- 【分享】SDLPAL 仙剑奇侠传开源项目编译
- php微秒,PHP 微秒
- fabric使用配置文件configtx.yaml生成创世区块时遇到的坑
- linux rpm安装openssl,安装 openssl devel
- arduino+A4889+步进电机
- MySQL 的安装
- 程序员跳槽面试,千万不能说的6大离职理由!
热门文章
- hdu 3887 Counting Offspring
- 机器学习——SVM之交叉验证对参数(C,gamma)进行优化以及选择
- ad中电容用什么封装_用什么来降低噪声?只要几个电容器就可以,简单有效!...
- java string类型_java中String类型
- 记一次Hbase数据迁移和遇到的问题
- Lazarus安装使用
- 矩阵学习摘记,欢迎指正
- Android零基础入门第81节:Activity数据传递
- 机器学习的简单逻辑回归的Advanced Optimization
- RHEL 集群(RHCS)配置小记 -- 文档记录