接口返回数据实体类属性大写变成小写

问题背景

今天遇到一个特别恶心的事情,我的返回实体类遵循了字段属性明明规则,驼峰命名法,在接口返回数据给前端的时候,所有数字那个字母全部自动变为了小写字母!

错误的返回示例:

 

正确的返回示例:

 

分析问题

接口中我使用了缓存,以及在返回数据时候用了响应实体包装了, 没有直接返回数据库映射实体类。

怀疑问题点:

  • 响应实体包装实体类中的字段有误,全部写成了小写字母?

  • 缓存在出入库的时候会自动转化大小写。

问题排查

按照这个思路,检查了我的响应实体类以及我的数据库映射实体类,完全是正确的数据结构,没有任何问题。而且在我们转化过程中也是全部为大写的。

接着,我将缓存去掉了,检验一下是否跟缓存信息有关系?

去掉缓存之后依然是不正确的格式,仍是全部小写。

所以,没办法, 还得是去看响应实体中是否有问题,这时候我发现了我的实体类生成get/set方法用的是lombok框架的@Data注解生成!

定位到问题

上面我们说了用的是lombok框架生成我们的get/set方法

查看我们的编译结果生成的class类:

lombok生成的get/set方法:


public String getXCoordinate() {
    return this.xCoordinate;
}

public String getYCoordinate() {
    return this.yCoordinate;
}

我们手写生成的get/set方法

 

 

public String getxCoordinate() {
    return this.xCoordinate;
}

public void setxCoordinate(String xCoordinate) {
    this.xCoordinate = xCoordinate;
}

public String getyCoordinate() {
    return this.yCoordinate;
}

public void setyCoordinate(String yCoordinate) {
    this.yCoordinate = yCoordinate;
}

这样很明显看出了两者的区别,这样就可以看出问题出在了哪里!因为我们SpringMvc默认使用jackson解析json,而jackson又依赖于实体类的get/set方法。所以就会出现上面我们所说的大小写问题!

解决方案

  1. 我们自己手动编写get/set方法
  2. 使用别名,用注解@JsonProperty("yCoorinate")
  3. 在使用lombok的时候,不使用一个小写字母接一个大写字母的属性命名

今天的问题就讲解到这,欢迎大家留言交流!也欢迎大家关注我的工种昊《coder练习生》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值