3 回答
TA贡献1869条经验 获得超4个赞
您可以使用此注释:
@JsonFormat(pattern = "YYYY-MM-DD")
您可以在此处进一步阅读有关验证日期格式时自定义错误消息的信息: 自定义错误消息
TA贡献1900条经验 获得超5个赞
您应该创建自定义反序列化器,覆盖反序列化方法以抛出自定义错误并在@JsonDeserialize 中使用它
public class CustomDateDeserializer
extends StdDeserializer<LocalDate> {
private static DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("YYYY-MM-DD");
public CustomDateDeserializer() {
this(null);
}
public CustomDateDeserializer(Class<?> vc) {
super(vc);
}
@Override
public LocalDate deserialize(
JsonParser jsonparser, DeserializationContext context)
throws IOException {
String date = jsonparser.getText();
try {
return LocalDate.parse(date, formatter);
} catch (DateTimeParseException e) {
throw new RuntimeException("Your custom exception");
}
}
}
用它:
@JsonDeserialize(using = CustomDateDeserializer.class)
LocalDate dateOfBirth;
TA贡献1765条经验 获得超5个赞
像这样的东西。
@Column(name = "date_of_birth")
@DateTimeFormat(iso = DateTimeFormatter.ISO_LOCAL_DATE)
@JsonFormat(pattern = "YYYY-MM-dd")
private LocalDateTime dateOfBirth;
DateTimeFormatter Java 文档
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
添加回答
举报