坑:实体类大写前台请求到的json却变成了小写

这是一个关于实体类的cId,到了前台却变成了cid的问题

问题再现

今天写项目的途中发现了一个问题:

@Data
@TableName("tb_book")
@ApiModel("图书")
public class Book implements Serializable {

        @TableId(value = "id", type = IdType.AUTO)
        @ApiModelProperty("图书id")
        private Long id;
        
        @ApiModelProperty("图书名")
        private String title;
        
        @ApiModelProperty("简介")
        private String info;
        
        @ApiModelProperty("类别Id")
        private Long cId;

}

这是我的实体类,然后我在postman请求获取图书列表的时候出现了这种情况:
问题
细心的小伙伴可以看出来,我的“类别Id”这一项应该是cId,但是我请求到的是cid,I从大写变成了小写

尝试解决

然后我尝试手写GetSet方法

@Data
@TableName("tb_book")
@ApiModel("图书")
public class Book implements Serializable {

        @TableId(value = "id", type = IdType.AUTO)
        @ApiModelProperty("图书id")
        private Long id;
        
        @ApiModelProperty("图书名")
        private String title;
        
        @ApiModelProperty("简介")
        private String info;
        
        @ApiModelProperty("类别Id")
        private Long cId;

        public Long getId() {
                return id;
        }

        public void setId(Long id) {
                this.id = id;
        }

        public String getTitle() {
                return title;
        }

        public void setTitle(String title) {
                this.title = title;
        }

        public String getInfo() {
                return info;
        }

        public void setInfo(String info) {
                this.info = info;
        }

        public Long getcId() {
                return cId;
        }

        public void setcId(Long cId) {
                this.cId = cId;
        }
}

然后就好了

原因

经过查资料发现,SpringMVC默认使用jackson解析json,jackson又依赖于实体类的get/set方法,通过lombok生成的方法是

而手写的是

两个方法名不一样,所以出现了json解析出i变小写的问题

事后尝试

在找到问题所在之后,我又进行了尝试,给实体类中cId这个字段起了个别名

@ApiModelProperty("类别Id")
@JsonProperty("cId")
private Long cId;

发现,使用lombok,最后postman里面请求的是cId正常了

总结

这次的问题可能是因为lombok的生成规则和idea的快捷键生成的get/set方法不太一样

解决办法

1.手写get/set方法
2.使用别名@JsonProperty(“cId”)
3.使用lombok时,避免一个小写字母接一个大写字母这种实体类

查其他资料发现的问题

像NICKName这种不符合驼峰命名的名字,最后会变成nickname

  • 30
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值