JSON целое число читается как Java булево true - PullRequest
0 голосов
/ 12 февраля 2019

Внутри json body запроса REST API я передаю "argument1":true, и он работает.Но я обнаружил, что при использовании любого числа оно превращается в истинное.Только при использовании явно false оно превращается в ложное.Я использую Spring Boot ResponseEntityExceptionHandler и @RestControllerAdvice для обработки всех исключений.Как я могу привести любое исключение при преобразовании 534 в true?

1 Ответ

0 голосов
/ 12 февраля 2019

Добавьте в свой контроллер метод, аннотированный @InitBinder, и предоставьте настраиваемый логический редактор

@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
    webDataBinder.registerCustomEditor(Boolean.class, new CustomBooleanEditor("true", "false", false));
}

Spring регистрирует значение по умолчанию CustomBooleanEditor , отображающее "true", "on", "да "и любое ненулевое число как true (также допускается пустое значение как false), выбрасывающее IllegalArgumentException, когда значение недопустимо.

Вы можете либо переопределить его, либо предоставить собственную реализацию, выбрасывающую определенныйисключение.

...