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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:45:34