关于前后端传值中的JSON转化

本文最后更新于:2024年11月6日 凌晨

前因

在做Spring Boot整合Mybatis的一个小DEMO的时候,所有的分层,数据库配置都做好了,结果用Postman测试的新增的时候,传给后端一个JSON对象,后端拿不到值,离谱的是只能拿的到guid的值,其他两个却为null。请求体是这样写的:

1
2
3
4
5
{
"guid": "13",
"dName": "小明",
"dAge": 17
}

接受的对象是这样定义的:

1
2
3
4
5
6
7
8
9
10
@Data
public class Dog {

private String guid;

private String dName;

private Integer dAge;

}

在控制层我特意打印出接受的对象供Debug用,结果是这样的:

1
Dog(guid=13, dName=null, dAge=null)

我在此处调试了许久,一直到饭点,我才恋恋不舍地离开,路上也百思不得其解。直到晚上我看到一篇博客后恍然大悟,找到了根本原因。

后果

在传输过程中dName的N,也从大写变为了小写,在进行测试时,发现所有格式为aBc的,经过JSON传值,都变为了abc,但是aaBc,经过传值后,依然是aaBc,可见,只有形如aBc这样,大写字母前只有一个小写字母的,才会出现JSON强行将大写转为小写的情况。

前人总结的经验教训对于程序员来说参考价值极大,若后人哀之而不鉴之,亦使后人而复哀后人也。

所以,不要这样定义类的属性尽量使用驼峰时前面至少有2个小写字母,比如:dogNamedogAge,或者在实体类的get方法上加上@JsonProperty("dName")


全世界的程序员,联合起来!


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!