Json整数被读取为java Boolean true

Gab*_*ado 3 json boolean spring-boot

在 REST API 请求 json 正文中,我正在传递"argument1":true并且可以正常工作。但我发现当使用任何数字时,它都会将其转换为 true。只有在显式使用时,false它才会变为 false。我正在使用 Spring BootResponseEntityExceptionHandler@RestControllerAdvice处理所有异常。转换534为时如何抛出任何异常true

noi*_*ale 6

在您的控制器中添加一个带有注释的方法@InitBinder并提供一个自定义的布尔编辑器

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

Spring 注册一个默认的CustomBooleanEditor映射“true”、“on”、“yes”和任何非零数字 as true(也允许空值 as falseIllegalArgumentException在值无效时抛出。

您可以覆盖它或提供您自己的实现以引发特定异常。