有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用JsonFormat注释或任何其他spring日期注释验证即时类型字段的ISO标准格式的日期值?

我正在尝试使用ISO模式pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")验证Java中Instant字段的有效日期格式,我收到一个错误,指出JSON parse error: Cannot deserialize value of type java.time.Instant from String \"2019-11-25T14:43:22.602Z\"有人能帮我验证使用注释的即时类型字段的日期吗

这是我在代码中给出的方式:

@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'

共 (1) 个答案

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