杰克逊 - 序列化分区日期时间到 ISO 8601 字符串

2022-09-01 22:54:54

我想将 a 序列化为符合 ISO 8601 标准的字符串,例如:
ZonedDateTime2018-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

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

<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

mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

答案 2