Jackson序列化LocalDate与Springboot集成
前言
Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了。基本用法见https://www.cnblogs.com/woshimrf/p/java8-date-api.html
问题
LocalDate可以很友好的toString为YYYY-MM-dd
的格式,很适合我当前的业务,但当我把它丢到json的时候,瞬间解体了:
{
"year": 2018,
"month": "AUGUST",
"era": "CE",
"dayOfMonth": 1,
"dayOfWeek": "TUESDAY",
"dayOfYear": 213,
"leapYear": false,
"monthValue": 8,
"chronology": {
"id":"ISO",
"calendarType":"iso8601"
}
}
可我想要的是yyyy-MM-dd啊。加上jackson format试一试,也不行。
@JsonFormat(shape = JsonFormat.Shape.STRING,
pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
难道要手动实现JsonSerializer? google之,果然有人解决了。
解决
添加
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.6</version>
</dependency>
用法
@Test
public void testJsonFormat() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
LocalDate date = LocalDate.of(2018, 5, 5);
String dateStr = mapper.writeValueAsString(date);
Assert.assertEquals("\"2018-05-05\"", dateStr);
LocalDateTime dateTime = LocalDateTime.of(2018, 5, 5, 1, 1, 1);
Assert.assertEquals("\"2018-05-05T01:01:01\"", mapper.writeValueAsString(dateTime));
}
然而,在Springboot中,默认提供了ObjectMapper,我又不想自定义。
Springboot中使用
同样把上述jar加入依赖。然后修改配置文件,新增
spring:
jackson:
serialization:
WRITE_DATES_AS_TIMESTAMPS: false
这样可以直接使用LocalDate,不用单独JsonFormat就可以实现自己的功能了。
LocalDateTime序列化
@Configuration
public class LocalDateTimeSerializerConfig {
@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
private String pattern;
@Bean
public LocalDateTimeSerializer localDateTimeDeserializer() {
return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
}
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
}
}
参考
原文连接:https://reflectoring.io/configuring-localdate-serialization-spring-boot/ 作者: Tom Hombergs
Jackson序列化LocalDate与Springboot集成的更多相关文章
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot系列——Jackson序列化
前言 Spring Boot提供了与三个JSON映射库的集成: Gson Jackson JSON-B Jackson是首选的默认库. 官网介绍: https://docs.spring.io/spr ...
- 源码分析springboot自定义jackson序列化,默认null值个性化处理返回值
最近项目要实现一种需求,对于后端返回给前端的json格式的一种规范,不允许缺少字段和字段值都为null,所以琢磨了一下如何进行将springboot的Jackson序列化自定义一下,先看看如何实现,再 ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- Windows环境下springboot集成redis的安装与使用
一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...
- 28. SpringBoot 集成Redis
1.引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- SpringBoot集成Jersey
SpringBoot集成Jersey 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> & ...
- SpringBoot 集成 Spring Session
SpringBoot 集成 Spring Session 应该讲解清楚,为什么要使用 Redis 进行 Session 的管理. Session 复制又是什么概念. Spring Session 在汪 ...
随机推荐
- CentOS7 Failed to start LSB: Bring up/down networking.解决方法
https://www.cnblogs.com/bonjov1/p/4323836.html CentOS7 Failed to start LSB: Bring up/down networking ...
- AI绘制毛线的小技巧
1.新建一个500*500的画布. 2.绘制一个大小一样的正方形[颜色#060B1d] 3.绘制圆形1pt描边. 4. ctrl+c ctrl+F 原位复制圆形等比 ...
- frp使用笔记
参考文档: https://github.com/fatedier/frp/blob/master/README_zh.md#%E9%80%9A%E8%BF%87-frpc-%E6%89%80%E5% ...
- 在centos7上使用最简单的方法把php脚本做成服务,随开机启动运行
1.准备文件:coffeetest.service # copy to /usr/lib/systemd/system # systemctl enable coffeetest.service [U ...
- 【java】:Junit
创建单元测试文件 点击创建测试文件的目录,比如,我要在control目录下添加一个测试类,点击control文件夹 右键->new->other->junit test case 下 ...
- Linux 第七天
软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l 开源,如果有足够的能力,可以修改源代码 l 可以自由选择所需的功能 l 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...
- s32 kickstart 批量自动安装系统
1. 自动安装操作系统 http://blog.oldboyedu.com/autoinstall-kickstart/ 自动安装操作系统的解决方案:kickstart.cobbler(披着web ...
- SpringMVC+JQuery实现头像编辑器
一.简单说明 本头像编辑器主要实现了图片的上传.显示(不溢出父窗口).旋转.裁剪功能! 图片的上传用到的是异步上传,页面不进行刷新,原理是通过JQuery的异步提交+SpringMVC的上传 上传完毕 ...
- hdu 4911 Inversion and poj2299 [树状数组+离散化]
题目 题意: 给你一串数字,然后给你最多进行k次交换(只能交换相邻的)问交换后的最小逆序对个数是多少. 给你一个序列,每次只能交换相邻的位置,把他交换成一个递增序列所需要的最少步数 等于 整个序列的 ...
- DataBrewery Cubes 连接Kylin
问题背景 Kylin作为一个极其优秀的MOLAP,提供了完整的Cube创建.更新流程.同时提供了Sql查询.功能上看没有问题,但是在提供查询服务的时候还是有些不友好. sql查询需要常常需要关联Hiv ...