【坑】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;

}

相关推荐
西岭千秋雪_1 天前
Zookeeper实现分布式锁
java·分布式·后端·zookeeper·wpf
MarcoPage1 天前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
脸大是真的好~1 天前
黑马JAVAWeb-11 请求参数为数组-XML自动封装-XML手动封装-增删改查-全局异常处理-单独异常分别处理
java
Hello.Reader1 天前
Data Sink定义、参数与可落地示例
java·前端·网络
2401_837088501 天前
stringRedisTemplate.opsForHash().entries
java·redis
lkbhua莱克瓦241 天前
Java基础——集合进阶3
java·开发语言·笔记
蓝-萧1 天前
使用Docker构建Node.js应用的详细指南
java·后端
多喝开水少熬夜1 天前
Trie树相关算法题java实现
java·开发语言·算法
lkbhua莱克瓦241 天前
Java基础——集合进阶用到的数据结构知识点1
java·数据结构·笔记·github
音符犹如代码1 天前
Java并发List实战:CopyOnWriteArrayList原理与ArrayList常见面试题
java·开发语言·面试·list