我正在尝试使用Instant
模式ISO
来验证Java中pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
字段的有效日期格式,并且收到一条错误消息,指出JSON parse error: Cannot deserialize value of type java.time.Instant from String \"2019-11-25T14:43:22.602Z\"
谁能帮助我,以验证Instant类型字段的日期使用注释。
这是我在代码中给出的方式:
@JsonFormat(shape = JsonFormat.Shape.STRING ,pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private Instant processingEndDate;
或
@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private Instant processingEndDate;
我已用于此Instant
类型的值和格式,没有被解析。
Sample value: 2019-11-25T14:43:22.602Z
Format I used:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
Z
-不要忽略它请勿在Z
前后加上引号。将'Z'
更改为Z
。使用yyyy-MM-dd'T'HH:mm:ss.SSSZ
。您的引号使Z
字符未经处理,被忽略。
但是Z
字符提供了重要信息:这意味着从UTC偏移零小时-分钟-秒。
@JsonFormat( shape = JsonFormat.Shape.STRING , pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" )
private Instant processingEndDate
此外,您可能根本不需要指定格式模式。此格式是标准的ISO 8601格式。 java.time类在解析/生成字符串时默认使用这些标准格式。您的格式是java.time.Instant
的特定默认设置。
因此,虽然我不知道您的特定JSON处理库,但我建议您尝试完全不指定格式。查看默认值是否完成任务。
为@JsonFormat批注添加timezone
对其进行了修复。
[答案]
@JsonFormat(shape = JsonFormat.Shape.STRING ,pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "UTC")
private Instant processingEndDate;