前言
在写后端的c层返回字段断言的时候,进行对于user对象的isAdmin字段断言。相干实体类字段如下
/**
* 是否是超级管理员
*/
private Boolean isAdmin = false;
public Boolean getAdmin() {
return isAdmin;
}
public void setAdmin(Boolean admin) {
isAdmin = admin;
}
当我断言时,我断言isAdmin字段存在
【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元
然而他报错说不存在$.isAdmin。
后端变json字符串原理
解决办法是打印一下相干数据,看见返回值为“admin”: true,咱们将isAdmin改成admin,运行通过。然而为什么是admin而不是isAdmin呢?在我过来的认知里,json字符串的键值始终跟对象的属性名称雷同,然而这里却呈现了不一样。看来我的了解错了。
询问老师后得悉,对象转变成json字符串的键值是依据属性对应的get办法生成的。
比方咱们在这里的isAdmin对应的get办法
public Boolean getAdmin() {
return isAdmin;
}
具体变动为失去相应的get办法的办法名,像下面的就是getAdmin。而后去掉get,再将首字母变为小写。这就是为什么是键值是admin而不是isAdmin了。
咱们将get办法名改为getIsAdmin,此时咱们就应该断言isAdmin字段存在了。
实体类的get、set办法
为什么isAdmin字段要写成getAdmin办法名而不是getIsAdmin办法名。
当咱们写实体类时,IDEA能够帮忙咱们主动生成getter/setter办法。
鼠标右键->Generate->Getter and Setter,而后选取想要生成的对应属性即可。
咱们发现一个问题,咱们写一个Boolean类型的admin属性与Boolean类型的isAdmin属性生成的是雷同办法名称的getter/setter办法。也就是
getAdmin办法名。
究其原因。看网上有说阿里是禁止Boolean类型的字段已is打头的,也有人说不举荐这种写法。具体能够看这篇文章:阿里标准:为什么boolean类型变量命名禁用is结尾
总结