千家信息网

Jackson对Java8时间类型的序列化跟反序列化的实现方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Jackson对Java8时间类型的序列化跟反序列化的实现方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Jackson对Jav
千家信息网最后更新 2026年11月03日Jackson对Java8时间类型的序列化跟反序列化的实现方法

这篇文章主要讲解了"Jackson对Java8时间类型的序列化跟反序列化的实现方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Jackson对Java8时间类型的序列化跟反序列化的实现方法"吧!

Jackson对Java8时间类型的序列化跟反序列化

前言

默认的情况下,Jackson序列化/反序列化 Java8 新增的时间类型不会序列化成字符串或者时间戳,因为没有相对应的序列化策略,所以我们可以自己来配置对象的序列化跟反序列化策略,也可以引用jackson-datatype-jsr310的jar包来进行处理,下面我们以LocalDateTime作为示例

引入JSR310依赖

在项目内,我们引用下依赖

    com.fasterxml.jackson.datatype    jackson-datatype-jsr310    2.8.11

JSR310默认配置

默认的情况下,JSR310给我们提供了转换成字符串的序列化/反序列化类,分别是LocalDateTimeSerializer/LocalDateTimeDeserializer,我们可以使用已经有的实现,来进行序列化

我们往Jackson的ObjectMapper内注册一个JSR310提供的JavaTimeModule模块,JavaTimeModule内,我们需要配置LocalDateTime的的序列化策略,具体代码如下

ObjectMapper objectMapper = new ObjectMapper();JavaTimeModule javaTimeModule = new JavaTimeModule();javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))              .addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));              objectMapper.registerModule(javaTimeModule);

自定义配置Java8时间类型的序列化/反序列化

这次,我们自定义转换成秒级的时间戳,Jackson提供了JsonDeserializer跟JsonSerializer两个抽象类,以上两个分别是反序列化跟序列化的父类,我们继承它并且实现抽象方法,具体代码如下

public class InstantSerializer extends JsonSerializer {    @Override    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {        gen.writeNumber(DateUtils.toSecond(value));    }}public class InstantDeserializer extends JsonDeserializer {    @Override    public LocalDateTime deserialize(JsonParser p, DeserializationContext txt) throws IOException, JsonProcessingException {        return Instant.ofEpochSecond(p.getLongValue()).atZone(ZoneId.systemDefault()).toLocalDateTime();    }}

将定义的序列化规格,注册到ObjectMapper里面去

ObjectMapper objectMapper = new ObjectMapper();JavaTimeModule javaTimeModule = new JavaTimeModule();javaTimeModule.addSerializer(LocalDateTime.class, new InstantSerializer())              .addDeserializer(LocalDateTime.class,new InstantDeserializer());              objectMapper.registerModule(javaTimeModule);

总结

到此,我们大概介绍了两种配置的方法,一种是jsr310已经提供的,另外一种是通过继承jackson提供的抽象类,自己进行实现,两者实现上差不多,不过通过继承更灵活,更可控,使用jsr310更方便,具体的使用就仁者见仁智者见智了

感谢各位的阅读,以上就是"Jackson对Java8时间类型的序列化跟反序列化的实现方法"的内容了,经过本文的学习后,相信大家对Jackson对Java8时间类型的序列化跟反序列化的实现方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

序列 时间 类型 方法 配置 情况 策略 学习 两个 代码 内容 字符 字符串 仁者见仁 智者见智 差不多 仁者 前言 对象 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网加科技 广州淘业互联网络科技 苏州找大状互联网科技有限公司 盈实互联网科技 互联网医疗科技 银优互联网科技有限公司 时间互联网络科技 互联网科技的未来发展 互联网科技宣传片 海南科技产业互联网平台 消费医药和互联网科技 互联网科技公司营业执照怎么办理 区块链结合互联网科技 富国互联网金融科技混合基金 互联网与数字科技关系 2021世界互联网领先科技成果发布 互联网科技平台产品运营 第三届互联网大会安防黑科技 杭州融税互联网科技有限公司 厦门中拓互联网络科技有限公司 华宇互联网科技 互联网和高科技公司 北京三清互联网科技 青海科技产业互联网发展 35岁以上互联网科技行业 普陀区互联网教育科技管理办法 广州三三互联网科技有限公司 互联网金融金融科技 保山浩联互联网科技有限公司
0