Spring API POST请求JSON解析异常:Foo对象id字段始终为null
Spring接口接收JSON时字段值为null的解决办法
针对你遇到的接口接收Foo对象后id字段始终为null的问题,可从以下几个方向排查解决:
1. 字段访问权限与Jackson序列化问题
Foo类中的id字段为包私有访问权限,Jackson默认无法直接访问非public字段,即使有Lombok的@Setter注解也可能出现反序列化失败。
解决办法:
- 给字段添加
@JsonProperty注解,明确指定Jackson序列化/反序列化时的字段名:
import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import com.fasterxml.jackson.annotation.JsonProperty; @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class Foo { @JsonProperty String id; }
- 或者直接将字段改为public权限:
public String id;
2. Lombok注解生效验证
Lombok未正确生成getter/setter方法也会导致字段无法被赋值,需确认:
- 项目依赖中已引入Lombok:
Maven依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
Gradle依赖:
compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
- IDE已启用Lombok支持:比如IDEA需安装Lombok插件,并开启
Settings > Build, Execution, Deployment > Compiler > Annotation Processors中的Enable annotation processing选项。
3. Jackson依赖检查
Spring Boot项目中spring-boot-starter-web已包含Jackson依赖,无需额外引入;若为普通Spring项目,需手动添加Jackson核心依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
内容的提问来源于stack exchange,提问作者paiego
相关产品推荐
相关产品推荐

