前言
在寫后端的c層返回字段斷言的時候,進行對于user對象的isAdmin字段斷言。相關實體類字段如下
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/** * 是否是超級管理員 */ private Boolean isAdmin = false ; public Boolean getAdmin() { return isAdmin; } public void setAdmin(Boolean admin) { isAdmin = admin; } |
當我斷言時,我斷言isAdmin字段存在
但是他報錯說不存在$.isAdmin。
解決方法是打印一下相關數據,看見返回值為“admin”: true,我們將isAdmin改成admin,運行通過。但是為什么是admin而不是isAdmin呢?在我過去的認知里,json字符串的鍵值一直跟對象的屬性名稱相同,但是這里卻出現了不一樣。看來我的理解錯了。
詢問老師后得知,對象轉變成json字符串的鍵值是根據屬性對應的get方法生成的。
比如我們在這里的isAdmin對應的get方法
1
2
3
|
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開頭
總結
到此這篇關于后端將數據轉化為json字符串傳輸的文章就介紹到這了,更多相關后端將數據轉化為json字符串傳輸內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000023818342