在寫後端的c層返回字段斷言的時候,進行對於user對象的isAdmin字段斷言。相關實體類字段以下json
/** * 是不是超級管理員 */ private Boolean isAdmin = false; public Boolean getAdmin() { return isAdmin; } public void setAdmin(Boolean admin) { isAdmin = admin; }
當我斷言時,我斷言isAdmin字段存在後端
可是他報錯說不存在$.isAdmin。
spa
解決方法是打印一下相關數據,看見返回值爲「admin」: true
,咱們將isAdmin改爲admin,運行經過。可是爲何是admin而不是isAdmin呢?在我過去的認知裏,json字符串的鍵值一直跟對象的屬性名稱相同,可是這裏卻出現了不同。看來個人理解錯了。
詢問老師後得知,對象轉變成json字符串的鍵值是根據屬性對應的get方法生成的。
好比咱們在這裏的isAdmin對應的get方法.net
public Boolean getAdmin() { return isAdmin; }
具體變化爲獲得相應的get方法的方法名,像上面的就是getAdmin
。而後去掉get,再將首字母變爲小寫。這就是爲何是鍵值是admin而不是isAdmin了。code
咱們將get方法名改成getIsAdmin,此時咱們就應該斷言isAdmin字段存在了。對象
爲何isAdmin字段要寫成getAdmin方法名而不是getIsAdmin方法名。
當咱們寫實體類時,IDEA能夠幫助咱們自動生成getter/setter方法。
鼠標右鍵->Generate->Getter and Setter,而後選取想要生成的對應屬性便可。blog
咱們發現一個問題,咱們寫一個Boolean類型的admin屬性與Boolean類型的isAdmin屬性生成的是相同方法名稱的getter/setter方法。也就是getAdmin
方法名。
究其緣由。看網上有說阿里是禁止Boolean類型的字段已is打頭的,也有人說不推薦這種寫法。具體能夠看這篇文章:阿里規範:爲何boolean類型變量命名禁用is開頭字符串