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

}

相关推荐
于慨18 小时前
spring boot
java·数据库·spring boot
always_TT18 小时前
static关键字初探
java·开发语言
降临-max19 小时前
IDEA常用git操作
java·github·intellij-idea
爱丽_19 小时前
G1 深入:Region、Remembered Set、三色标记与“可预测停顿”
java·数据库·算法
她说彩礼65万19 小时前
C语言 Static的用法
java·linux·c语言
spencer_tseng19 小时前
java.lang.ClassNotFoundException: org.slf4j.Logger
java·spring·maven
小江的记录本19 小时前
【VO、DTO、Entity】VO、DTO、Entity三大核心数据对象全解析(附核心对比表 + 代码示例)
java·数据库·spring boot·spring·架构·mybatis·数据库架构
无籽西瓜a19 小时前
TCP三次握手与四次挥手详解含图解
java·服务器·网络·tcp/ip
晨陌y19 小时前
Maven完整配置教程:从零基础到实战,新手零踩坑
java·maven
SuniaWang19 小时前
《Spring AI + 大模型全栈实战》学习手册系列·专题一:《RAG技术全景解析:从原理到架构设计》
java·javascript·人工智能·spring boot·后端·spring·架构