Jackson Java 8 DateTime序列化 [英] Jackson Java 8 DateTime serialisation

查看:631
本文介绍了Jackson Java 8 DateTime序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

杰克逊默认启用了java.time.Instant,其中<​​code> WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS ( READ _ )已启用。
jackson-datatype-jsr310

Jackson operates java.time.Instant with WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS (READ_ as well) enabled by default. jackson-datatype-jsr310

它生成这样的JSON

It produces JSON like this

{createDate:1421261297.356000000,modifyDate:1421261297.356000000}

在JavaScript中,从传统的millis时间戳获取日期要容易得多(而不是像上面的秒/ nanos),比如 new Date(1421261297356)

In JavaScript it's much easier to get Date from traditional millis timestamp (not from seconds/nanos as above), like new Date(1421261297356).

我认为默认情况下应该有一些理由采用纳米方法,那是什么原因?

I think there should be some reason to have the nanos approach by default, so what is that reason?

推荐答案

一种方法是创建自己的Jackson模块并按照您的方式进行序列化。

One way is to create your own Jackson module and do the serialization you way need.

你甚至可以做一个简单的Jackson8Module,它扩展了Jackson SimpleModule并提供了一些lambda友好的方法。

You can even do a simple Jackson8Module which extends the Jackson SimpleModule and provides some lambda friendly methods.

ObjectMapper jacksonMapper = new ObjectMapper();
Jackson8Module module = new Jackson8Module();
module.addStringSerializer(LocalDate.class, (val) -> val.toString());
module.addStringSerializer(LocalDateTime.class, (val) -> val.toString());
jacksonMapper.registerModule(module);

以下是Jackson8Module的代码:

Here is the code for the Jackson8Module:

有没有办法使用Java 8 lambda样式添加自定义Jackson序列化程序?

这篇关于Jackson Java 8 DateTime序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆