java-在杰克逊中以ISO8601格式反序列化“祖鲁”时间

我需要使用Jackson将反序列化时间2016-11-28T10:34:25.097Z的时间反序列化为Java8的ZonedDateTime.

 

我相信我已经正确配置了ObjectMapper(一种工厂方法):

 

 @Bean
ObjectMapper getObjectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    // some other config...
    objectMapper.registerModule(new JavaTimeModule());
    return objectMapper;
}

我在DTO的代码中有一个字段

 

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

当我尝试通过杰克逊解析此内容时,我得到

 

 java.lang.IllegalArgumentException: Can not deserialize value of type java.time.ZonedDateTime 
 from String "2016-11-28T10:34:25.097Z": Text '2016-11-28T10:34:25.097Z' could not be parsed,
 unparsed text found at index 23  at [Source: N/A; line: -1, column: -1]  

没有@JsonFormat的问题仍然存在.

我怎么可能克服这个问题?

Inm小程序商店 | Vultr中文网

最佳答案

问题可能出在模式中的“ Z”.日期时间值中不允许使用文字“ Z”.尝试使用“ X”代替.

 

 

  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值