欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > SpringBoot接收RequestBody数据时,参数大写接收不到数据以及解决办法

SpringBoot接收RequestBody数据时,参数大写接收不到数据以及解决办法

2025/6/19 6:17:27 来源:https://blog.csdn.net/qq_44757034/article/details/143192201  浏览:    关键词:SpringBoot接收RequestBody数据时,参数大写接收不到数据以及解决办法

在Spring Boot应用程序中,如果你发现当请求体(RequestBody)中的参数名是大写时无法接收到数据,这可能是因为HTTP请求的Content-Type头以及Spring Boot处理JSON的方式默认情况下对属性名称的大小写敏感。

当你使用@RequestBody注解来接收一个对象时,Spring Boot会尝试将请求体中的JSON数据自动转换成对应的Java对象。如果JSON字段名称与Java类中的属性名称不匹配(包括大小写),那么这个字段就无法被正确地映射到Java对象中,从而导致该字段为null或者没有被设置。

解决这个问题的方法有几种:

  1. 修改JSON字段名称:
    如果可以控制发送请求的一方,最直接的方法是让JSON字段名称和Java类中的属性名称保持一致(包括大小写)。

  2. 使用@JsonProperty注解:
    在你的Java类中,你可以使用Jackson库提供的@JsonProperty注解来指定JSON字段名称。这样即使JSON字段名称与Java属性名称不同也能正确映射。

    import com.fasterxml.jackson.annotation.JsonProperty;public class MyRequest {@JsonProperty("PARAM_NAME")private String paramName;// getters and setters
    }
    
  3. 自定义ObjectMapper配置:
    你可以通过配置ObjectMapper实例来改变默认的行为。例如,你可以配置ObjectMapper忽略JSON字段的大小写:

    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.PropertyNamingStrategy;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;@Configuration
    public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper mapper = new ObjectMapper();mapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);return mapper;}
    }
    

    注意:这种方法会影响整个应用的所有序列化/反序列化行为,请谨慎使用。

  4. 使用Map接收参数:
    如果你不想创建特定的POJO类,也可以直接用Map<String, Object>来接收所有请求体的数据,然后根据键值手动处理数据。

    @PostMapping("/myEndpoint")
    public ResponseEntity<?> handleRequest(@RequestBody Map<String, Object> requestBody) {// 使用requestBody.get("PARAM_NAME")来获取值
    }
    

请根据你的具体需求选择合适的解决方案。通常推荐使用@JsonProperty或调整JSON字段名称以保持一致性,因为这些方法更为直观且易于维护。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词