如何在@JsonFormat中使用毫秒可选的时间戳解析与Jackson?

Ask*_*mov 2 java json iso8601 jackson deserialization

我的对象中有以下声明:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
private ZonedDateTime start;
Run Code Online (Sandbox Code Playgroud)

当我解析时间戳如2016-12-08T12:16:07.124Z(使用Jackson Json De-serilaizer)时它工作正常,但一旦我收到时间戳没有毫秒(例如"2016-12-08T12:16:07Z") ,它抛出异常.

我怎么可能在格式规范中使毫秒可选?

sha*_*zin 6

如果您使用的是Java 8,请.SSS在方括号内指定[.SSS]

JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss[.SSS]X")
Run Code Online (Sandbox Code Playgroud)


小智 6

如果millis由1或2或3位数字组成,您可以使用此模式

JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss[.SSS][.SS][.S]X")
Run Code Online (Sandbox Code Playgroud)

可选部分顺序严格