Postman Raw JSON传Nuser对象时FirstName与LastName值为Null问题
问题求助
通过Postman的Raw JSON Body提交新Nuser对象时,birthdate和insertion字段能正常接收,但FirstName和LastName字段始终为Null。
相关截图说明
- Postman请求:Raw JSON Body中传入的字段为
firstName、lastName、insertion、birthdate - 数据库记录:
FirstName和LastName字段值为Null,Insertion和Birthdate字段有正常值
代码片段
BaseUser类
@Entity public abstract class BaseUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int Id; private String FirstName; private String LastName; private String Insertion; private LocalDate Birthdate; public BaseUser() { } public BaseUser(String firstName, String lastName, String insertion, LocalDate birthdate) { FirstName = firstName; LastName = lastName; Insertion = insertion; Birthdate = birthdate; } public BaseUser(int id, String firstName, String lastName, String insertion, LocalDate birthdate) { Id = id; FirstName = firstName; LastName = lastName; Insertion = insertion; Birthdate = birthdate; } }
Nuser类
@Entity public class Nuser extends BaseUser { public Nuser(String firstName, String lastName, String insertion, LocalDate birthdate) { super(firstName, lastName, insertion, birthdate); } public Nuser() { } }
Nuser控制器
@RestController @RequestMapping("/user") public class NuserController { @Autowired private NuserService nuserService; @PostMapping("/add") public String add(@RequestBody Nuser nuser) { nuserService.AddUser(nuser); return "New account has been made"; } }
问题原因及解决方法
问题核心是字段命名与Jackson序列化/反序列化规则不匹配:
- 实体类使用大驼峰命名(
FirstName、LastName),但Postman传入的JSON是小驼峰格式(firstName、lastName) - Jackson默认遵循JavaBean规范:会将属性首字母转为小写匹配JSON字段,首字母大写的属性无法被正确映射
有两种可行解决方式:
修正实体类字段命名(推荐,符合Java编码规范)
将FirstName改为firstName,LastName改为lastName,Id改为id,Birthdate改为birthdate,同时同步调整构造方法、getter/setter的命名,确保符合JavaBean规范。示例:private String firstName; private String lastName; private LocalDate birthdate;使用
@JsonProperty注解指定映射关系
不修改字段名的前提下,给目标字段添加注解绑定JSON字段名:@JsonProperty("firstName") private String FirstName; @JsonProperty("lastName") private String LastName;
内容的提问来源于stack exchange,提问作者Meadas
相关产品推荐
相关产品推荐

