坑:实体类大写前台请求到的json却变成了小写

您所在的位置:网站首页 java大写转小写的方法 坑:实体类大写前台请求到的json却变成了小写

坑:实体类大写前台请求到的json却变成了小写

2023-07-01 12:57| 来源: 网络整理| 查看: 265

这是一个关于实体类的cId,到了前台却变成了cid的问题

问题再现

今天写项目的途中发现了一个问题:

@Data @TableName("tb_book") @ApiModel("图书") public class Book implements Serializable { @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty("图书id") private Long id; @ApiModelProperty("图书名") private String title; @ApiModelProperty("简介") private String info; @ApiModelProperty("类别Id") private Long cId; }

这是我的实体类,然后我在postman请求获取图书列表的时候出现了这种情况: 问题 细心的小伙伴可以看出来,我的“类别Id”这一项应该是cId,但是我请求到的是cid,I从大写变成了小写

尝试解决

然后我尝试手写GetSet方法

@Data @TableName("tb_book") @ApiModel("图书") public class Book implements Serializable { @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty("图书id") private Long id; @ApiModelProperty("图书名") private String title; @ApiModelProperty("简介") private String info; @ApiModelProperty("类别Id") private Long cId; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Long getcId() { return cId; } public void setcId(Long cId) { this.cId = cId; } }

然后就好了

原因

经过查资料发现,SpringMVC默认使用jackson解析json,jackson又依赖于实体类的get/set方法,通过lombok生成的方法是 而手写的是 两个方法名不一样,所以出现了json解析出i变小写的问题

事后尝试

在找到问题所在之后,我又进行了尝试,给实体类中cId这个字段起了个别名

@ApiModelProperty("类别Id") @JsonProperty("cId") private Long cId;

发现,使用lombok,最后postman里面请求的是cId正常了

总结

这次的问题可能是因为lombok的生成规则和idea的快捷键生成的get/set方法不太一样

解决办法

1.手写get/set方法 2.使用别名@JsonProperty(“cId”) 3.使用lombok时,避免一个小写字母接一个大写字母这种实体类

查其他资料发现的问题

像NICKName这种不符合驼峰命名的名字,最后会变成nickname



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3