Postman传布尔值需区分@RequestBody和@RequestParam:JSON体中写true/false(不加引号),URL参数用小写true/false;包装类Boolean接收null,基本类型boolean缺失字段可能报错或默认false。

Postman 里传布尔值,不能靠“写 true/false 字符串”蒙混过关——后端用 @RequestParam 或 @RequestBody 接收时,行为完全不同,不注意会直接 400 或解析为 null。
POST 请求 body 中传布尔值(@RequestBody 场景)
这是最常见也最稳妥的方式:把布尔字段作为 JSON 对象的一部分发过去。
- Body 选
raw,Content-Type 头设为application/json - JSON 内容直接写
true或false,不加引号(加引号就变成字符串了) - 例如:
{"isActive": true, "isVerified": false} - 后端用
@RequestBody User user接收,只要User类中字段是Boolean或boolean类型,Jackson 就能自动转换 - ⚠️ 坑点:如果字段声明为
Boolean(包装类),但 JSON 里传了null或缺失,反序列化后是null,不是false;用boolean基本类型则缺失字段会报错或 fallback 为false(取决于 Jackson 配置)
GET 或 POST 的 URL 参数/表单中传布尔值(@RequestParam 场景)
这种场景下,Spring 默认把 "true"、"false"(全小写)、"on"、"off"、"1"、"0" 映射为布尔值,但仅限于字符串字面量匹配。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- Params 栏填
enabled=true或enabled=false(注意必须小写) - 如果是
x-www-form-urlencoded,Body 里同样填enabled=true - 后端接收方法形参要写成
@RequestParam Boolean enabled或@RequestParam(defaultValue = "false") boolean enabled - ⚠️ 坑点:
"True"、"TRUE"、"yes"、"no"默认不识别,会抛MethodArgumentTypeMismatchException;如需支持,得自定义Converter或用String接收再手动转
Pre-request Script 动态生成布尔值
需要批量测试不同布尔组合时,用脚本控制比手动改更可靠。
- 在 Pre-request Script 里写:
pm.globals.set("isTest", Math.random() > 0.5); - 然后在请求参数中引用:
{{isTest}}(用于@RequestParam)或"isTest": {{isTest}}(用于rawJSON) - ⚠️ 注意:
{{isTest}}在 URL 或 form-data 中会被转成字符串"true"/"false",Spring 能认;但在 raw JSON 里直接插进去会变成"isTest": true(无引号),前提是模板里没额外加引号 - 如果用
pm.environment.set("flag", "true")存字符串,那后续必须手动处理引号逻辑,容易出错
真正容易被忽略的是:同一个接口,@RequestParam 和 @RequestBody 对布尔值的解析机制完全隔离,不能混用逻辑去猜。传之前先确认后端用的是哪个注解,再决定填 Params 还是 raw JSON,否则 400 错误连日志都看不出哪错了。

















