我需要使用 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 毫秒之间?