前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jackson序列化LocalDate与Springboot集成

Jackson序列化LocalDate与Springboot集成

作者头像
Ryan-Miao
发布2018-08-01 10:37:12
1.3K0
发布2018-08-01 10:37:12
举报
文章被收录于专栏:Ryan Miao

前言

Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了。基本用法见https://cloud.tencent.com/developer/article/1172512

问题

LocalDate可以很友好的toString为YYYY-MM-dd的格式,很适合我当前的业务,但当我把它丢到json的时候,瞬间解体了:

代码语言:javascript
复制
{
  "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试一试,也不行。

代码语言:javascript
复制
@JsonFormat(shape = JsonFormat.Shape.STRING,
        pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")

难道要手动实现JsonSerializer? google之,果然有人解决了。

解决

添加

代码语言:javascript
复制
<dependency>
  <groupId>com.fasterxml.jackson.datatype</groupId>
  <artifactId>jackson-datatype-jsr310</artifactId>
  <version>2.8.6</version>
</dependency>

用法

代码语言:javascript
复制
@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加入依赖。然后修改配置文件,新增

代码语言:javascript
复制
spring:
  jackson:
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: false

这样可以直接使用LocalDate,不用单独JsonFormat就可以实现自己的功能了。

参考

原文连接:https://reflectoring.io/configuring-localdate-serialization-spring-boot/ 作者: Tom Hombergs

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题
  • 解决
  • Springboot中使用
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档