
本文详解如何将 Java 枚举字段(如 `Type.MEN`)序列化为标准 JSON 字符串,并在 Postman 中以合法格式提交,避免 400 错误;核心是确保枚举以字符串字面量(而非对象或序号)形式传递。
在使用 Postman 调用基于 Spring Boot 或其他 Java Web 框架的 REST API 时,若请求体中包含不可修改的枚举字段(如示例中的 Request.Type),常见错误是直接在 Body 中输入 "type": "MEN" 却仍返回 400 Bad Request。根本原因往往不是格式本身错误,而是后端反序列化逻辑与前端发送格式不匹配——而最稳妥、可验证的解决方案,是通过 Java 代码真实序列化一个实例,获取“权威 JSON”作为 Postman 输入模板。
✅ 正确的 JSON 格式(以示例类为准)
对于 Request 类,其合法 JSON 必须满足以下两点:
- type 字段必须为 字符串字面量(如 "MEN"),而非数字、对象或全限定类名;
- 枚举值大小写严格匹配定义(MEN ≠ men ≠ Men);
- 整体结构为标准 JSON 对象。
✅ 正确示例(可直接粘贴至 Postman 的 raw JSON Body):
立即学习“Java免费学习笔记(深入)”;
{
"num": 123,
"type": "MEN"
}⚠️ 常见错误格式(将导致 400):
{ "type": "men" } // ❌ 小写,不匹配枚举常量名
{ "type": 0 } // ❌ 传递序号(ordinal),非 Jackson 默认行为
{ "type": { "name": "MEN" } } // ❌ 传递对象,非默认序列化格式
{ "type": "Request$Type.MEN" } // ❌ 全限定名,非常规? 如何生成“权威 JSON”?推荐两种可靠方式
方式一:使用 Jackson ObjectMapper(主流、无需额外依赖)
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonGenerator {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
Request request = new Request(Request.Type.MEN, 42);
String json = mapper.writeValueAsString(request);
System.out.println(json); // 输出: {"num":42,"type":"MEN"}
}
}✅ 默认情况下,Jackson 会将 enum 序列化为 name() 字符串(即 "MEN"),完全符合 REST 接口预期。
方式二:使用 MgntUtils(轻量、一行搞定)
// 引入 Maven 依赖 //// String json = JsonUtils.writeObjectToJsonString(new Request(Request.Type.FAMILY, 99)); // 输出: {"num":99,"type":"FAMILY"}com.github.michaelgantman //MgntUtils //2.1.0 //
? 关键注意事项
- 不要猜测格式,务必实测生成:即使文档声称“传字符串”,也应通过上述代码生成真实 JSON,避免因 @JsonValue、@JsonCreator 等自定义注解导致行为偏差;
- 检查后端是否启用 FAIL_ON_UNKNOWN_PROPERTIES:若请求含多余字段,可能触发 400,建议 Postman Body 仅保留 num 和 type;
- 确认 Content-Type 头:Postman 中必须设置 Content-Type: application/json;
- 枚举命名规范影响序列化:若后端使用 @JsonProperty("men") 显式映射,则 JSON 中需写 "men" —— 此时仍应通过代码生成验证,而非手动推断。
✅ 最终操作流程(Postman 实践)
- 运行上述任一 Java 程序,复制控制台输出的 JSON 字符串;
- 在 Postman 中选择 POST 请求 → Body → raw → 切换类型为 JSON;
- 粘贴生成的 JSON,检查 Content-Type 头是否存在且值为 application/json;
- 发送请求,验证响应状态码为 200 或预期成功码。
遵循此方法,你将彻底规避因枚举格式不一致导致的 400 错误,实现前后端 JSON 协议的精准对齐。










