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

SpringBoot中@RequestBody参数为何始终接收为空?求解决方案

解决@RequestBody接收JSONObject为空的问题
  • 改用Map或自定义POJO接收
    Spring默认消息转换器对标准Java类型(如Map<String, Object>)或自定义POJO的支持更完善,替换参数类型即可正常接收:

    @PostMapping(value="/register")
    public Status registerSingleConnection(@RequestBody Map<String, Object> param){
        System.out.println(param); // 可正常获取请求参数
        // ...业务逻辑
    }
    

    也可以定义匹配请求字段的POJO类,类型更安全:

    public class RegisterParam {
        private String id;
        private String val;
        // 生成getter、setter方法
    }
    
    @PostMapping(value="/register")
    public Status registerSingleConnection(@RequestBody RegisterParam param){
        System.out.println(param.getId());
        // ...业务逻辑
    }
    
  • 使用Jackson的JsonNode替代JSONObject
    若需要灵活处理JSON结构,推荐用Jackson原生的JsonNode,Spring默认支持无需额外配置:

    import com.fasterxml.jackson.databind.JsonNode;
    
    @PostMapping(value="/register")
    public Status registerSingleConnection(@RequestBody JsonNode param){
        String id = param.get("id").asText();
        String val = param.get("val").asText();
        System.out.println(param);
        // ...业务逻辑
    }
    
  • 配置第三方JSON库的消息转换器(若坚持用特定JSONObject)
    如果使用的是阿里FastJSON的JSONObject,需要手动配置对应的消息转换器:

    1. 先引入FastJSON依赖(以Maven为例):
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.83</version>
    </dependency>
    
    1. 添加Web配置类注册转换器:
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
            converters.add(0, converter);
        }
    }
    

    配置后Spring就能正确将请求体转换为FastJSON的JSONObject。

  • 检查请求细节

    • 确认请求头Content-Type严格为application/json,Postman中需在Headers面板正确设置,避免拼写错误。
    • 检查请求体JSON格式是否合法,确保引号、逗号等符号无语法错误。

另外,代码中System.out.printlin是拼写错误,需改为System.out.println,避免控制台输出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:01:09