杰克逊 - 将ZonedDateTime序列化为ISO 8601字符串

时间:2018-02-14 07:17:14

标签: java datetime serialization jackson

我想将ZonedDateTime序列化为 ISO 8601 兼容字符串,例如:
2018-02-14T01:01:02.074+0100

我尝试了以下内容:

@JsonProperty("@timestamp")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
private ZonedDateTime timestamp;

但不幸的是,它没有给出正确的结果,并将ZonedDateTime及其所有字段等序列化。

谢谢你的帮助!

1 个答案:

答案 0 :(得分:15)

确保包含并注册Jackson模块,以获取Java 8中引入的日期和时间类。例如

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.8.10</version>
</dependency>

如有必要:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());

附注:您可能还会在没有注释的情况下获得所需的格式,只需将ObjectMapper配置为不将日期序列化为时间戳。 E.g。

mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);