Spring Boot/Angular HTTP响应参数名错误:nbr显示为number
问题原因及解决方案
原因分析
这是因为Jackson序列化遵循JavaBean命名规范:Jackson会根据getter方法的名称生成JSON字段名,而非直接使用实体类的字段名。如果你的nbr字段对应的getter方法被IDE自动生成为getNumber()(部分IDE会将缩写nbr识别为number生成方法名),Jackson就会将该字段序列化为number,而非nbr。
Spring Boot默认使用Jackson作为JSON序列化工具,这个过程完全可控,不存在不可控的后台操作。
解决方案
有两种常用的解决方式:
方式一:修正getter/setter方法名
确保nbr字段对应的getter/setter方法名严格匹配字段名:
public int getNbr() { return nbr; } public void setNbr(int nbr) { this.nbr = nbr; }
修改后,Jackson会直接将该字段序列化为nbr。
方式二:使用@JsonProperty注解强制指定JSON字段名
如果不想修改getter/setter方法名,可以在nbr字段上添加@JsonProperty注解,明确指定JSON中的字段名:
@Column(name = "nbr") @JsonProperty("nbr") private int nbr;
该注解会强制Jackson将该字段序列化为nbr,不受getter方法名的影响。
补充说明
Spring Boot的JSON序列化逻辑完全可控,除了上述局部解决方式,也可以通过全局配置修改Jackson的命名策略(比如设置为直接使用实体类字段名),但针对单个字段的问题,优先使用上述两种局部方案更灵活。
内容的提问来源于stack exchange,提问作者Psi
相关产品推荐
相关产品推荐

