首页 > 解决方案 > 使用@JsonFormat 时如何配置自定义错误消息?

问题描述

我在这里遇到了一个问题,我不能接受错误的日期格式。

例如:

如果 api 请求收到日期“2019-14-10”我不能接受。现在,当我收到它时,JsonFormat 给了我 2020-02-10。

为了解决这个问题,我添加了 lenient=OptBoolean.FALSE,如下所示:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "America/Vancouver", lenient = OptBoolean.FALSE)
private Date effectiveDate;

现在的问题是,当我调用传递错误日期(2019-14-10)的 api 时,我只会收到 400 Bad request 响应。

是否可以为此验证创建自定义响应?

例如,我可以返回这样的东西:

{
  "code": {
    "value": 4,
    "name": "InvalidRequest"
  },
  "message": "{effectiveDate=Date is invalid. Please choose a valid date}"
}

或者至少是错误消息。

标签: javajacksonjackson2jackson-dataformat-xml

解决方案


这不会是杰克逊直接处理的事情。这是更高阶的验证 API 会处理的事情,比如bean validators


推荐阅读