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

问题背景

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

错误的返回示例:

 

正确的返回示例:

 

分析问题

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

怀疑问题点:

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

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

问题排查

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

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

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

所以,没办法, 还得是去看响应实体中是否有问题,这时候我发现了我的实体类生成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练习生》


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部