共计 910 个字符,预计需要花费 3 分钟才能阅读完成。
前言
在写后端的 c 层返回字段断言的时候,进行对于 user 对象的 isAdmin 字段断言。相干实体类字段如下
/**
* 是否是超级管理员
*/
private Boolean isAdmin = false;
public Boolean getAdmin() {return isAdmin;}
public void setAdmin(Boolean admin) {isAdmin = admin;}
当我断言时,我断言 isAdmin 字段存在
然而他报错说不存在 $.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 结尾
总结