2

我需要使用 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;

方括号的效果是使毫秒可选,如此处所建议的反序列化“Zulu”时间 in ISO8601 格式 in jackson

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

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

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

4

1 回答 1

0

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

于 2019-05-25T15:53:53.680 回答