Я использую @RequestBody @Valid
аннотации для проверки входного аргумента JSON для метода в контроллере. Это веб-приложение, обслуживающее API через spring-boot-starter-web 2.0.1.RELEASE.
Когда при проверке объекта обнаруживается ошибка, обработчик исключений по умолчанию создает действительно хороший JSON, объясняющий, что именно не так с вводом.
Проблема в том, что у меня есть собственный @ExceptionHandler
, поскольку у моего API есть контракт на сообщения об ошибках. Я хочу включить валидационную JSON-структуру Spring в мой собственный JSON, который бы обернул ее.
В моем обработчике исключений я вижу, что получаю MethodArgumentNotValidException
, но я не знаю, как десериализовать его в JSON так же, как Spring внутри. По-видимому, в Spring есть какой-то класс, который делает это.
Может ли кто-нибудь дать подсказку?
Ниже приведен пример JSON, который я хочу быть частью моего объекта
{
"timestamp" : "2018-05-01T22:45:28.907+0000",
"status" : 400,
"error" : "Bad Request",
"errors" : [{
"codes" : ["NotNull.ticket.items[0].amount", "NotNull.ticket.items.amount", "NotNull.items[0].amount", "NotNull.items.amount", "NotNull.amount", "NotNull.java.math.BigDecimal", "NotNull"],
"arguments" : [{
"codes" : ["ticket.items[0].amount", "items[0].amount"],
"arguments" : null,
"defaultMessage" : "items[0].amount",
"code" : "items[0].amount"
}
],
"defaultMessage" : "may not be null",
"objectName" : "ticket",
"field" : "items[0].amount",
"rejectedValue" : null,
"bindingFailure" : false,
"code" : "NotNull"
}
],
"message" : "Validation failed for object='ticket'. Error count: 1",
"path" : "/v1/databases/00000000-0000-0000-0000-000000000000/retail/pos/ticket"
}