SpringMVC Jackson 库解析 json 串属性名大小写自动转换问题
问题描述
在项目开发中,当实体类和表中定义的某个字段为 RMBPrice,首字母是大写的,sql 查询出来的列名也是大写的 RMBPrice,但是使用 jquery 的 ajax 返回请求响应时却出错,字段名变自动转换成了小写的 rmbprice 了。
问题分析
将服务器响应 ajax 请求的数据打印出来,字段名仍然是大写的 RMBPrice 。所以,只可能是将 Java 对象转换到 json 串发给客户端的时候出了问题。
经过测试确实如此,即 第三方 jackson 库在解析 Java 对象为 json 串规则如下:
当Java 对象属性名的前几个字母都是大写的字母时,都自动会转换成小写,直到不是大写为止,若小写后面还有大写,则保持大写。
举例:
RRRddRRR 会自动转换为 rrrddRRR ;所以,按照以上规则,RMBPrice 会自动转换为 rmbprice。
解决办法
方法一:
将 RMBPrice 按照自动转换规则直接改为 rmbprice 即可;但是,这样变量名看起来不是很舒服
方法二:
- 使用第三方 jackson 库时
使用 @JsonProperty("属性名") 注解
@JsonProperty("RMBPrice")
private String RMBPrice;
这个注解的作用就是告诉 jackson 解析 json 串时直接使用注解定义的属性名。
注意:SpringMVC 默认使用的是第三方库 jackson 解析 Java 对象。
- 使用第三方 fastjson 库时
使用 @JSONField(name = "属性名") 注解
@JSONField(name = "Name")
public String getName(){
return name;
}
注意: 该注解应该放在 get 方法前
总结
在实际项目开发时,一定要遵守 Java 编码规范,可以少踩很多坑,避免很多不必要的问题和麻烦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)