【坑】lombok+SpringMVC自动修改大小写

1.问题

今天对接接口的时候遇到个小坑,pId传到前端变成了pid(字段还是直接用pid比较好),查了半天,发现是由于 Jackson 序列化库在推断字段名时应用的简化规则导致的;

2.原因

当使用 Lombok 生成 getter 和 setter 时,对于 pId 这样的字段,Lombok 会生成 getPId() 和 setPId() 方法。然而,Jackson 默认会将属性名的第一个字符转换为小写,如果它是一个大写字母,并且第二个字符是大写字母,那么会认为它是一个缩写,于是就直接把两个字母都变成小写了。

  • Lombok会根据字段名自动生成getter和setter方法,例如,对于字段pId,Lombok会生成getPId()和setPId();

  • 而SpringMVC生成的是getpId()和setpId()

3.解决办法

我感觉最好不要用第二个字母需要大写的字段;

如果硬要使用pId这种字段,就在字段添加注解或者重写get、set,让他转成 json 的时候变成指定名字

@JsonProperty("pId")

private String pId;
public String getpId() {

return pId;

}

public void setpId(String pId) {

this.pId = pId;

}

相关推荐
Croa-vo3 分钟前
Optiver OA 气球节模拟题:拆解系统建模的核心逻辑,附避坑指南
java·数据结构·算法·leetcode·职场和发展
悟能不能悟10 分钟前
Java CheckFailedException会去获取message.properties的内容吗
java·开发语言
shang_xs13 分钟前
Java 25 ScopedValue - 作用域内安全访问的一种实现
java·开发语言·安全
小途软件13 分钟前
基于深度学习的驾驶人情绪识别
java·人工智能·pytorch·python·深度学习·语言模型
小白学大数据22 分钟前
Java 异步爬虫高效获取小红书短视频内容
java·开发语言·爬虫·python·音视频
我命由我1234523 分钟前
Android Jetpack Compose - Compose 重组、AlertDialog、LazyColumn、Column 与 Row
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
愤怒的代码40 分钟前
在 Android 中执行 View.invalidate() 方法后经历了什么
android·java·kotlin
memgLIFE1 小时前
SQL 优化方法详解(1)
java·数据库·sql
2201_757830871 小时前
Bean原理篇
java·开发语言
小宇的天下1 小时前
Calibre 3Dstack--每日一个命令day 6 [process和export layout](3-6)
java·前端·数据库