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

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字段,首字母大写的属性无法被正确映射

有两种可行解决方式:

  1. 修正实体类字段命名(推荐,符合Java编码规范)
    将FirstName改为firstName,LastName改为lastName,Id改为id,Birthdate改为birthdate,同时同步调整构造方法、getter/setter的命名,确保符合JavaBean规范。示例:

    private String firstName;
    private String lastName;
    private LocalDate birthdate;
    
  2. 使用@JsonProperty注解指定映射关系
    不修改字段名的前提下,给目标字段添加注解绑定JSON字段名:

    @JsonProperty("firstName")
    private String FirstName;
    
    @JsonProperty("lastName")
    private String LastName;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:10:30