Jackson 将 ISO8601 格式的日期时间反序列化为 Java8 Instant
我正在尝试使用Jackson将ISO8601格式的日期反序列化为Java8。我向 ObjectMapper 注册了 JavaTimeModule,并关闭了该设置。java.time.Instant
WRITE_DATES_AS_TIMESTAMPS
但是,如果尝试反序列化,它将不起作用,因为JavaTimeModule似乎只会反序列化使用UTC时区偏移量格式化的日期时间(例如)。然后我尝试使用这样的注释:2016-03-28T19:00:00.000+01:00
2016-03-28T18:00:00.000Z
@JsonFormat
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = "UTC")
像这样:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = JsonFormat.DEFAULT_TIMEZONE)
但是,这两者都不起作用,我得到一个例外:
com.fasterxml.jackson.databind.JsonMappingException: Unsupported field: YearOfEra (through reference chain: org.example.Article["date"])
这意味着时区参数被忽略,日期时间格式化程序不知道如何在没有时区的即时格式。
有没有办法使用 Jackson 和 JavaTimeModule 反序列化不在 UTC 时区偏移到 Java 8 的 ISO8601 字符串,而无需编写自定义反序列化程序?java.time.Instant