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

news2024/11/15 15:47:05

问题背景

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

错误的返回示例:

 

正确的返回示例:

 

分析问题

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

怀疑问题点:

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

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

问题排查

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【鸟哥杂谈】腾讯云 CentOS8 Linux环境搭建docker

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-15 ❤️❤️ 本篇更新记录 2023-01-15 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝&#x1f64…

当青训营遇上码上掘金之主题四-攒青豆

theme: juejin 攒青豆 现有 n 个宽度为 1 的柱子,给出 n 个非负整数依次表示柱子的高度,排列后如下图所示,此时均匀从上空向下撒青豆,计算按此排列的柱子能接住多少青豆。(不考虑边角堆积) 以下为上图例子…

【JavaEE初阶】第一节.计算机是如何工作的

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 文章目录 前言 一、计算机发展历史 二、冯诺依曼体系 三、CPU 3.1 浅谈CPU 3.2 寄存器 3.3 指令 3.4 CPU的操作流程 3.5 时钟周期 四、编程语言 总结…

vue.js客服系统实时聊天项目开发(四)引入iconfont图标代码

普通引入模式下是这样的 首先&#xff0c;您需要在iconfont.cn上创建一个账号并添加图标。 然后&#xff0c;将iconfont的链接代码加入到页面的head标签中&#xff0c;例如&#xff1a; <link rel"stylesheet" href"//at.alicdn.com/t/font_123456_abcdefghi…

Docker为什莫方便(学习的记录)

Docker为什莫方便&#xff08;学习的记录&#xff09; 程序 — apk— 发布到商城------下载安装即可使用 程序----打包项目带上环境&#xff08;创建一个项目的镜像&#xff09;-----发布到docker仓库当中------下载安装运行即可 &#x1f315; docker的核心思想 将各个环境…

【手写 Vue2.x 源码】第二十七篇 - Vue 生命周期的实现

一&#xff0c;前言 上篇&#xff0c;主要介绍了数组依赖收集的实现 本篇&#xff0c;Vue 生命周期的实现 二&#xff0c;Vue.mixin 介绍 1&#xff0c;mixin 简介 Vue2 中可以通过 Vue.mixin 为 vue 进行功能扩展 开发中&#xff0c;经常使用 mixin 来为所有组件增加一些生…

机器学习的相关软件框架下载安装

文章目录一、Anaconda1. Anaconda 的下载2. Anaconda 的安装3. Anaconda Navigator 打不开问题&#xff08;不适用所有&#xff09;二、PyTorch-CPU1. PyTorch 环境创建2. PyTorch 下载3. Jupyter 中使用 PyTorch三、Python 版本升级与包的维护1. 更新 Anaconda2. 查看与更新 p…

回归预测 | MATLAB实现SSA-LSSVM麻雀算法优化最小二乘支持向量机多输入单输出

回归预测 | MATLAB实现SSA-LSSVM麻雀算法优化最小二乘支持向量机多输入单输出 目录回归预测 | MATLAB实现SSA-LSSVM麻雀算法优化最小二乘支持向量机多输入单输出预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现SSA-LSSVM麻雀算法优化最小二乘支持向量机…

【MAUI】自动更新功能的安卓App

自动更新功能的安卓App自动更新主要下面4个步骤更新服务测试页面:MainPage.xaml测试自动更新主要下面4个步骤 1、获取最新版本号 2、提示用户发现更新&#xff0c;等待用户确认更新 3、下载最新的apk包 4、安装apk包 更新服务 为简单示例&#xff1a;直接在android平台文件夹…

Spring资源管理,Spring资源管理源码分析

文章目录一、Java标准资源管理1、Java 标准资源定位2、Java URL 协议扩展基于 java.net.URLStreamHandlerFactory基于 java.net.URLStreamHandler3、Java 标准资源管理扩展的步骤4、Spring为什么不用Java标准的资源管理二、Spring资源接口与实现1、Spring基本资源接口InputStre…

C++ 简单实现RPC网络通讯

RPC是远程调用系统简称&#xff0c;它允许程序调用运行在另一台计算机上的过程&#xff0c;就像调用本地的过程一样。RPC 实现了网络编程的“过程调用”模型&#xff0c;让程序员可以像调用本地函数一样调用远程函数。最近在做的也是远程调用过程&#xff0c;所以通过重新梳理R…

项目管理平台,如何助力CMMI3-5级高效落地?

近日CoCode旗下Co-ProjectV3.0智能项目管理平台全面升级&#xff0c;CoCode产品4大版本全新发布&#xff0c;用户不限版本30天免费试用&#xff1b;平台全面支持CMMI3-5级&#xff0c;助力CMMI高效落地。 一、4大版本全新发布 不限版本30天免费试用 Co-Project V3.0智能项目管理…

FPGA:组合逻辑电路的设计

文章目录组合逻辑电路的设计组合逻辑电路的设计步骤组合逻辑电路的设计举例例1例2组合逻辑电路的设计 根据实际逻辑问题&#xff0c;求出所要求逻辑功能的最简单逻辑电路。 组合逻辑电路的设计步骤 1.逻辑抽象&#xff1a;根据实际逻辑问题的因果关系确定输入、输出变量&…

【寒假每日一题】DAY8 倒置字符串

牛客网链接&#xff1a;传送门 【❤️温馨提示】自己做一遍&#xff0c;再看解析效果更佳哟 描述 将一句话的单词进行倒置&#xff0c;标点不倒置。输入描述&#xff1a; 每个测试输入包含1个测试用例&#xff1a; I like beijing. 输入用例长度不超过100输出描述&#xff1a…

Open3D 点云投影至指定平面(Python版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 假设给定的平面为 a x + b y + c z + 1 = 0 ax+by+cz+1=0

Python基础(二十四):面向对象核心知识

文章目录 面向对象核心知识 一、面向对象三大特性 1、封装 2、继承 3、多态

音频音量调整中的ramp up down

在日常生活中不管是打电话还是听音乐&#xff0c;都会遇到音量不合适而去调整音量的情况。如果音量调整软件处理不好&#xff0c;就会听到pop noise。产生pop noise的原因是音量直接从当前值骤变到目标值&#xff0c;而不是缓慢的变。如果缓慢的变就不会有pop noise了。图1显示…

select for update是行锁还是表锁,还真得看情况

背景 看到许多写select for update是行锁还是表锁的文章&#xff0c;但每篇文章的结论好像都不太一样。同时&#xff0c;是行锁还是表锁的问题直接影响着系统的性能&#xff0c;所以特意为大家调研一番&#xff0c;也就有了本篇文章&#xff0c;一共为大家汇总验证了20个场景下…

MES系统选型攻略,优秀MES系统应具备哪些性质

在众多MES系统中&#xff0c;企业怎样才能找到最适合自己的产品&#xff1f;那么&#xff0c;一套高质量的MES系统&#xff0c;究竟有什么特点&#xff1f;随着全球经济一体化的发展&#xff0c;中美两国之间的贸易战争日趋白热化&#xff0c;中国作为一个生产大国&#xff0c;…

行为型模式 - 迭代器模式iterator

模式的定义与特点 迭代器模式&#xff08;iterator Pattern&#xff09;&#xff0c;为的提是可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集&#xff0c;聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个…