当前位置: 首页 > news >正文

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

问题背景

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

错误的返回示例:

 

正确的返回示例:

 

分析问题

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

怀疑问题点:

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

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

问题排查

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

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

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

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

相关文章:

  • 互动营销网站建设/网络营销的四种模式
  • wordpress怎样连接数据库连接/广东seo教程
  • 小程序网站开发机构/win10优化
  • 长春搜索引擎网站推广/搜索引擎推广方法
  • 为违法网站做推广进去要几年/软文广告属于什么营销
  • 长春建站网站/企业员工培训内容及计划
  • 小白必看!用JMeter+ANT进行接口自动化测试,并生成HTML测试报告
  • jvm系列(2)--类加载子系统
  • 给定一个非负整数num,如何不用循环语句,返回>=num,并且离num最近的,2的某次方
  • Linux (open、write、read、close、lseek、chmod、sync)操作文件的函数详解
  • Linux系统信息查看命令大全
  • Kotlin~软件开发7大原则
  • Ajax的学习笔记(包括原生的ajax,jquery,axios,fetch)
  • Spring Cloud OpenFeign 配置
  • 语义分割——FCN模型pytorch实现
  • 规划之路:SLAM学习经验分享
  • InfluxDB + Grafana计算成功率
  • 数组常用方法总结 (6) :includes / indexOf / lastIndexOf / valueOf / toString / isArray