首页 > 解决方案 > 在请求正文中验证日期

问题描述

我有一个包含日期字段的请求正文,如果格式错误,我想验证日期的输入并返回错误代码 400 BadRequest。

如果我使用,JsonFormat那么它会抛出错误 500:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
private Date dateAt;

所以我将字段更改为String,然后使用解析并在任何地方抛出 BadRequest 格式getDate()

我对这种方法不是很满意。有没有其他优雅的方式来实现这个验证?


我想我会接受来自 JSON 格式化程序的错误 500 并跳过我的自定义异常。

标签: javajsonspring

解决方案


从 Java 8 开始,您应该避免使用Date. Java 8 带来了全新的日期和时间 API

根据您的问题,合适的替代品DateLocalDate,预计格式为yyyy-MM-dd

Jackson 有一个模块支持新的日期和时间 API,如果日期格式不正确,则会引发异常。序列化时,您要确保WRITE_DATES_AS_TIMESTAMPS禁用该功能,因此将根据ISO 8601格式写入值。


推荐阅读