【问题标题】:Deserialize “Zulu” time in ISO8601 format in jackson with 0 to 3 millisecond digits?用0到3毫秒数字反序列化杰克逊ISO8601格式的“Zulu”时间?
【发布时间】:2016-12-14 10:56:30
【问题描述】:

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

我为 ZonedDateTime 正确配置了 ObjectMapper,并且我的 DTO 代码中有一个字段

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

方括号的作用是使毫秒成为可选的,如Deserialize "Zulu" time in ISO8601 format in jackson 所建议的那样。

但是,问题是发送这些的服务会删除尾随零,所以如果我有 0.100 毫秒,它们会以 2016-11-28T10:34:25.1Z 的形式出现,如果我有的话0.220 毫秒,它们看起来像 2016-11-28T10:34:25.22Z 所以在这种情况下,我在点后面有 一个或两个 数字。

这又违反了上面显示的格式,它只接受不接受或全部接受三个数字。我尝试使用格式 [S[S[S]]] 但效果不佳。

如何指定 JSON 格式以使我的数字介于 0 到 3 毫秒之间?

【问题讨论】:

    标签: java json datetime jackson zoneddatetime


    【解决方案1】:

    您可以按顺序使用多种可选格式,如下所示: "yyyy-MM-dd'T'HH:mm:ss.[SSS][SS][S]Z"

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 2019-10-03
      • 2019-07-05
      • 2015-04-07
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 2013-07-10
      • 2013-11-20
      相关资源
      最近更新 更多