如何使用JsonFormat批注或其他任何春季日期批注来验证Instant Type字段的ISO标准格式的日期值?

问题描述 投票:0回答:1

我正在尝试使用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'
java spring-boot java-time iso java-date
1个回答
1
投票

使用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处理库,但我建议您尝试完全不指定格式。查看默认值是否完成任务。


0
投票

为@JsonFormat批注添加timezone对其进行了修复。

[答案]

@JsonFormat(shape = JsonFormat.Shape.STRING ,pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "UTC")
private Instant processingEndDate;
© www.soinside.com 2019 - 2024. All rights reserved.