springboot中jackson日期格式化技巧分享-mile米乐体育

目录

  • jackson 日期格式化技巧
  • 后续问题
  • 补充:jackson 统一配置 日期转换格式
  • 参考资料

jackson 日期格式化技巧

使用 spring boot 时,需要使用 jackson 处理一些 java time api 类型的 json 序列化问题,在处理一些类的字段时,可以通过直接在属性上加注解的方式来指定其格式化样式。但是,昨天同事遇到一个格式化map数据的问题,这样就不能通过加注解来解决格式化样式的问题了。

在网上各种搜索,各种尝试后,终于解决了这个问题,记录一下,以备不时之需。

闲言少叙,直接上代码:

package com.diguage.demo.config; import com.fasterxml.jackson.databind.objectmapper; import com.fasterxml.jackson.databind.util.stddateformat; import com.fasterxml.jackson.datatype.jsr310.javatimemodule; import com.fasterxml.jackson.datatype.jsr310.deser.localdatedeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.localdatetimedeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.localdateserializer; import com.fasterxml.jackson.datatype.jsr310.ser.localdatetimeserializer; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.context.annotation.primary; import java.text.dateformat; import java.text.simpledateformat; import java.time.localdate; import java.time.localdatetime; import static com.fasterxml.jltcovyackson.databind.serializationfeature.*; import static java.time.format.datetimeformatter.ofpattern; / * 配置类 * * @author d瓜哥 */ @configuration public class config { / * 创建 objectmapper 对象,配置日期格式化 * * @author d瓜哥 */ @bean @primary public objectmapper objectmapper() { objectmapper mapper = new objectmapper(); string datetimepattern = "yyyy-mm-dd hh:mm:ss"; string datepattern = "yyyy-mm-dd"; dateformat dateformat = new simpledateformat(datetimepattern); mapper.setdateformat(dateformat); mapper.configure(write_dates_as_timestamps, false); mapper.setdateformat(new stddateformat().withcolonintimezone(true)); javatimemodule javatimemodule = new javatimemodule(); javatimemodule.adddeserializer(localdate.class, new localdatedeserializer(ofpattern(datepattern))); javatimemodule.addserializer(localdate.class, new localdateserializer(ofpattern(datepattern))); javatimemodule.adddeserializer(localdatetime.class, new localdatetimedeserializer(ofpattern(datetimepattern))); javatimemodule.addserializer(localdatetime.class, new localdatetimeserializer(ofpattern(datetimepattern))); mapper.registermodule(javatimemodule); return mapper; } }

后续问题

不知道通过这种方式指定日期格式化样式后,在处理一些打格式化样式注解的字段时,会有什么样的表现?有机会测试一下。

补充:jackson 统一配置 日期转换格式

spring: jackson: default-property-inclusion: always time-zone: gmt 8 date-format: yyyy-mm-dd hh:mm:ss

这样序列化后,date类型会被格式化成配置中的格式。

创建jacksonconfig.java

@configuration public class jacksonconfig { @bean @order(ordered.highest_precedence) public jackson2objectmapperbuildercustomizer customjackson() { return new jackson2objectmapperbuildercustomizer() { @override public void customize(jackson2objectmapperbuilder builder) { builder.serializerbytype(localdatetime.class, new localdatetimeserializer(datetimeformatter.ofpattern("yyyy-mm-dd hh:mm:ss"))); builder.serializerbytype(localdate.class, new localdateserializer(datetimeformatter.ofpattern("yyyy-mm-dd"))); builder.serializerbytype(localtime.class, new localtimeserializer(datetimeformatter.ofpattern("hh:mm:ss"))); builder.deserializerbytype(localdatetime.class, new localdatetimedeserializer(datetimeformatter.ofpattern("yyyy-mm-dd hh:mm:ss"))); builder.deserializerbytype(localdate.class, new localdatedeserializer(datetimeformatter.ofpattern("yyyy-mm-dd"))); builder.deserializerbytype(localtime.class, new localtimedeserializer(datetimeformatter.ofpattern("hh:mm:ss"))); builder.serializationinclusion(jsoninclude.include.non_null); builder.failonunknownproperties(false); builder.featurestodisable(serializationfeature.write_dates_as_timestamps); } }; } }

参考资料

  • jackson date

  • json - java 8 localdate jackson format

到此这篇关于springboot中jackson日期格式化技巧的文章就介绍到这了,更多相关springbootjackson日期格式化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图