Java 反序列化&x201C;祖鲁”;ISO8601格式的jackson时间,0到3毫秒?

Java 反序列化&x201C;祖鲁”;ISO8601格式的jackson时间,0到3毫秒?,java,json,datetime,jackson,zoneddatetime,Java,Json,Datetime,Jackson,Zoneddatetime,我需要使用Jackson将格式时间反序列化到Java8的ZoneDateTime中 我为ZoneDateTime正确配置了ObjectMapper,并且在我的代码中为DTO添加了一个字段 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.[SSS]Z") private ZonedDateTime updatedAt; 方括号的作用是使毫秒成为可选的,如这里所建议的 然而,问题是发送这

我需要使用Jackson将格式时间反序列化到Java8的ZoneDateTime中

我为ZoneDateTime正确配置了ObjectMapper,并且在我的代码中为DTO添加了一个字段

  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.[SSS]Z")
private ZonedDateTime updatedAt;
方括号的作用是使毫秒成为可选的,如这里所建议的

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

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


如何指定JSON格式,使其具有0到3毫秒的数字

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