You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot API开发求助:JSON请求/响应处理问题

用户提问

我是Java和SpringBoot的新手,目前正在开发一款新API。我通过Postman发送包含请求头和请求体的请求,使用RequestPayload类配合Controller来处理请求(Service和Dao文件确认无问题),但不清楚如何处理JSON请求与响应,恳请指点我遗漏了哪些内容或存在哪些认知盲区。

附上RequestPayload类代码:

public class RequestPayload {

    String pol_pkg_prod_code;
    JSONObject checklist;
    
    public JSONObject getCheckList() {
        return checklist;
    }
    public void setCheckList(JSONObject checklist) {
        this.checklist = checklist;
    }
    public String pol_pkg_prod_code() {
        return pol_pkg_prod_code;
    }
    public void setpol_pkg_prod_code(String pol_pkg_prod_code) {
        this.pol_pkg_prod_code = pol_pkg_prod_code;
    }
}

问题分析与解决建议

一、RequestPayload类的核心问题

  • 不符合JavaBean规范
    字段pol_pkg_prod_code的getter、setter命名错误:

    • getter应该是getPol_pkg_prod_code()(规范建议字段用小驼峰polPkgProdCode,对应gettergetPolPkgProdCode()),当前的pol_pkg_prod_code()不是标准getter,Spring的JSON序列化框架(Jackson)无法识别,会导致请求体值无法绑定。
    • settersetpol_pkg_prod_code首字母未大写,应该改为setPol_pkg_prod_code()(对应小驼峰字段的setPolPkgProdCode())。
  • 直接使用JSONObject的弊端
    用org.json.JSONObject作为字段类型,Jackson对其序列化/反序列化支持不佳,还会丢失类型安全性。建议替换为:

    • 若checklist是固定结构,自定义Checklist实体类;
    • 若为动态结构,改用Map<String, Object>。

二、Controller层的必要配置

  • 请求绑定注解
    处理POST JSON请求时,Controller方法需加@PostMapping,参数前加@RequestBody,示例:

    @RestController
    @RequestMapping("/api")
    public class MyController {
        @PostMapping("/process")
        public ResponseEntity<?> handleRequest(@RequestBody RequestPayload payload) {
            // 业务逻辑处理
            return ResponseEntity.ok("处理成功");
        }
    }
    

    确保项目引入Spring Web依赖(SpringBoot Starter Web默认包含,自动引入Jackson处理JSON)。

  • JSON响应处理
    自定义响应实体类,Spring会自动序列化为JSON返回,示例:

    public class ApiResponse {
        private int code;
        private String message;
        private Object data;
        
        // 构造方法、getter、setter
    }
    

    Controller中返回:

    return ResponseEntity.ok(new ApiResponse(200, "处理成功", resultData));
    

三、Postman请求的正确配置

  1. 请求方法选POST,填写接口URL;
  2. 请求头添加Content-Type: application/json,告知服务器请求体格式;
  3. 请求体选raw -> JSON,输入匹配结构的JSON数据:
    {
        "pol_pkg_prod_code": "PROD001",
        "checklist": {
            "item1": "value1",
            "item2": true
        }
    }
    

四、额外优化建议

  • 字段与JSON键名不一致时,用@JsonProperty映射,比如:
    @JsonProperty("polPkgProdCode")
    String pol_pkg_prod_code;
    
  • 加@NotNull等校验注解,配合@Valid实现参数校验:
    public class RequestPayload {
        @NotNull(message = "产品编码不能为空")
        String pol_pkg_prod_code;
        // ...
    }
    
    Controller参数改为@Valid @RequestBody RequestPayload payload,自动校验参数合法性。

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:00:59