後端如何將數據轉化爲json字符串傳輸

前言

在寫後端的c層返回字段斷言的時候,進行對於user對象的isAdmin字段斷言。相關實體類字段以下json

/**
 * 是不是超級管理員
 */
private Boolean isAdmin = false;


 public Boolean getAdmin() {
    return isAdmin;
}

public void setAdmin(Boolean admin) {
    isAdmin = admin;
}

當我斷言時,我斷言isAdmin字段存在後端

可是他報錯說不存在$.isAdmin。
image.pngspa

後端變json字符串原理

image.png
解決方法是打印一下相關數據,看見返回值爲「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字段存在了。對象

實體類的get、set方法

爲何isAdmin字段要寫成getAdmin方法名而不是getIsAdmin方法名。
當咱們寫實體類時,IDEA能夠幫助咱們自動生成getter/setter方法。
鼠標右鍵->Generate->Getter and Setter,而後選取想要生成的對應屬性便可。blog

image.png

咱們發現一個問題,咱們寫一個Boolean類型的admin屬性與Boolean類型的isAdmin屬性生成的是相同方法名稱的getter/setter方法。也就是
getAdmin方法名。
究其緣由。看網上有說阿里是禁止Boolean類型的字段已is打頭的,也有人說不推薦這種寫法。具體能夠看這篇文章:阿里規範:爲何boolean類型變量命名禁用is開頭字符串

總結

相關文章
相關標籤/搜索