【发布时间】: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