首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >杰克逊将ISO8601格式的日期时间反序列化为Java8 Instant

杰克逊将ISO8601格式的日期时间反序列化为Java8 Instant
EN

Stack Overflow用户
提问于 2016-03-28 04:55:59
回答 3查看 81.2K关注 0票数 57

我正在尝试使用Jackson将ISO8601格式的日期反序列化为Java8 java.time.Instant。我在ObjectMapper中注册了JavaTimeModule,并关闭了WRITE_DATES_AS_TIMESTAMPS设置。

但是,如果试图反序列化2016-03-28T19:00:00.000+01:00将不会起作用,因为JavaTimeModule似乎只会反序列化使用UTC时区偏移(例如2016-03-28T18:00:00.000Z)格式化的日期-时间。然后我尝试使用@JsonFormat注释,如下所示:

代码语言:javascript
复制
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = "UTC")

就像这样:

代码语言:javascript
复制
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = JsonFormat.DEFAULT_TIMEZONE)

但是,这两种方法都不起作用,我得到了一个异常:

代码语言:javascript
复制
com.fasterxml.jackson.databind.JsonMappingException: Unsupported field: YearOfEra (through reference chain: org.example.Article["date"])

这意味着时区参数被忽略,日期时间格式化程序不知道如何在没有时区的情况下格式化Instant。

有没有一种方法可以使用Jackson和JavaTimeModule将不在UTC时区偏移量中的ISO8601字符串反序列化为Java8 java.time.Instant,而无需编写自定义的反序列化程序?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36252556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档