用杰克逊的ISO8601格式反序列化“祖鲁”时间,用0到3毫秒的数字?

时间:2016-12-14 10:56:30

标签: java json datetime jackson zoneddatetime

我需要使用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的建议使毫秒可选。

然而,问题是发送这些的服务会删除尾随零,所以如果我有.100毫秒,它们会变为 2016-11-28T10:34:25.1Z ,如果我有.220毫秒它们看起来像 2016-11-28T10:34:25.22Z 所以我在这种情况下有点一个或两个数字。

这再次违反了上面显示的格式,它只接受所有三位数字。我试图使用格式[S [S [S]]],但它并不好。

如何指定JSON格式,因此我有0到3毫秒的数字?

1 个答案:

答案 0 :(得分:0)

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