SpringBoot中@RequestBody接收对象属性为null的问题求助
以下是几个核心排查方向及解决方法:
检查实体类的属性访问权限与 getter/setter
实体类UserToto的私有属性必须配套对应的getter和setter方法,Spring的JSON消息转换器依赖这些方法注入值。如果用Lombok的@Data注解,要确认POM中已引入Lombok依赖,且IDE安装了Lombok插件(否则无法自动生成getter/setter)。如果字段名和JSON键名不匹配,可通过@JsonProperty指定映射关系:private String username; @JsonProperty("username") public String getUsername() { return username; } @JsonProperty("username") public void setUsername(String username) { this.username = username; }确认请求的Content-Type与请求体格式
用Swagger测试时,必须把请求头的Content-Type设为application/json,同时请求体要传标准JSON格式的数据,比如:{ "username": "demoUser", "password": "demoPass" }如果选了
form-data或其他类型,@RequestBody无法正确解析JSON内容。检查实体类的无参构造函数
Spring实例化实体类时依赖无参构造,如果UserToto只定义了带参构造,会导致无法创建对象,属性自然为null。要么手动添加无参构造,要么用Lombok的@NoArgsConstructor注解(同样要确保Lombok生效)。验证Spring Boot的JSON依赖配置
确认POM中已经引入spring-boot-starter-web依赖,它默认包含Jackson作为JSON处理器:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>如果自定义了消息转换器,别覆盖默认的Jackson配置,否则可能导致解析失败。
查看调试日志定位问题
开启DEBUG级别的日志,查看JSON解析过程中的错误信息:logging.level.org.springframework.web=DEBUG logging.level.com.fasterxml.jackson=DEBUG日志会显示Spring处理请求体的细节,比如字段不匹配、类型转换异常等,帮助快速定位问题。
内容的提问来源于stack exchange,提问作者user21287171

