JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2024-12-03 15:07:31": not a valid representation (error: Failed to parse Date value '2024-12-03 15:07:31': Cannot parse date "2024-12-03 15:07:31": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSX', parsing fails (leniency? null)); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2024-12-03 15:07:31": not a valid representation (error: Failed to parse Date value '2024-12-03 15:07:31': Cannot parse date "2024-12-03 15:07:31": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSSX', parsing fails (leniency? null))<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 519] (through reference chain: com.hbzz.ddc.admin.domain.DdcVehicleTransactReissuecert["licenseplateDate"])]
这是因为JSON解析过程中无法将字符串 "2024-12-03 15:07:31" 转换为 java.util.Date 类型。这通常是因为日期字符串的格式与 @JsonFormat 注解中指定的格式不匹配。
在 DdcVehicleTransactReissuecert 类中,licenseplateDate 字段使用了 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 注解,这表明期望的日期格式为 yyyy-MM-dd HH:mm:ss。然而,错误信息显示 Jackson 试图使用 yyyy-MM-dd'T'HH:mm:ss.SSSX 格式进行解析,这显然与实际的日期字符串格式不一致。
解决方案:
1.检查 JSON 数据源:
确保传入的 JSON 数据中的日期字段格式与 @JsonFormat 注解中的格式一致,即 yyyy-MM-dd HH:mm:ss。
2.调整 @JsonFormat 注解:
如果 JSON 数据源中的日期格式为 yyyy-MM-dd'T'HH:mm:ss.SSSX,则需要调整 @JsonFormat 注解以匹配该格式。
修改 licenseplateDate 和 issueDate 字段的 @JsonFormat 注解如下:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
3.检查前端和后端对这个字段的日期格式处理是否一致
4.启用日期解析的宽松模式:
可以通过配置 Jackson 的 ObjectMapper 来启用日期解析的宽松模式,但这可能会导致其他潜在的问题,因此建议优先考虑前两种方法。
在 Spring Boot 应用中,可以通过配置 application.properties 或 application.yml 文件来启用宽松模式:
根据具体情况,记得首先检查 JSON 数据源的日期格式是否正确,或者调整 @JsonFormat 注解以匹配数据源的格式。