ISO 8601,JsonFormat,TimeZone和最后的+0000的InvalidFormatException

时间:2019-05-08 14:51:35

标签: java spring jackson

情况

我有一个Java应用程序通过伪装调用微服务,并且遇到以下异常:

  

原因:com.fasterxml.jackson.databind.exc.InvalidFormatException:   无法从字符串反序列化类型java.util.Date的值   “ 2019-05-08T14:41:39.803 + 0000”:预期格式   “ yyyy-MM-dd'T'HH:mm:ss.XXX”

我已经指出,从服务器获得的这种格式是ISO8601,位于以下位置:

https://github.com/FasterXML/jackson-databind/blob/master/src/test/java/com/fasterxml/jackson/databind/deser/jdk/DateDeserializationTest.java#L157

我正在尝试以下@JsonFormat批注,但它们失败了:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.XXX", lenient = OptBoolean.TRUE) private Date creationDate;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.XXX", lenient = OptBoolean.TRUE) private Date  lastUpdatedDate;

问题

所以...为这个非常简单的问题道歉,但是:

如何最后处理+0000才能使反序列化最终生效?

1 个答案:

答案 0 :(得分:2)

  

最后如何处理+0000,以使反序列化最终成功?

@JsonFormat需要SimpleDateFormat兼容的模式定义。

因此,ZX可以用来表示GMT偏移值,具体取决于偏移格式是什么。

您要查找的完整模式是yyyy-MM-dd'T'HH:mm:ss.SSSZyyyy-MM-dd'T'HH:mm:ss.SSSX,如SimpleDateFormat文档的示例所示。

相关问题