解決javaBean規范導致json傳參首字母大寫將永遠獲取不到問題
javaBean規范導致json傳參首字母大寫獲取不到
規范中另一個特別的地方就是:
1.第二個字母為大寫的屬性名要區別對待
如果屬性名的第二個字母是大寫的,那麼該屬性名直接用作 getter/setter 方法中 get/set 的後部分,就是說大小寫不變。
2.屬性是首字母大寫
次字母小寫是,你永遠都找不到它的 getter/setter 方法的。
3.對於 boolean 類型屬性的 getter 方法
是 isXxx() 還是 getXxx() 就自己決定瞭,isXxx() 應該更接近於自然語言,更順溜些。
一般JavaBean屬性以小寫字母開頭,駝峰命名格式,相應的 getter/setter 方法是 get/set 接上首字母大寫的屬性名。例如:屬性名為userName,其對應的getter/setter 方法是 getUserName/setUserName。
但是,還有一些特殊情況:
1、如果屬性名的第二個字母大寫
那麼該屬性名直接用作 getter/setter 方法中 get/set 的後部分,就是說大小寫不變。例如屬性名為uName,方法是getuName/setuName。
2、如果屬性名的前兩個字母是大寫
(一般的專有名詞和縮略詞都會大寫),也是屬性名直接用作 getter/setter 方法中 get/set 的後部分。例如屬性名為URL,方法是getURL/setURL。
3、如果屬性名的首字母大寫
也是屬性名直接用作 getter/setter 方法中 get/set 的後部分。例如屬性名為Name,方法是getName/setName,這種是最糟糕的情況,會找不到屬性出錯,因為默認的屬性名是name。
4、如果屬性名以”is”開頭
則getter方法會省掉get,set方法會去掉is。例如屬性名為isOK,方法是isOK/setOK。
需要註意的是有些開發工具自動生成的getter/setter方法,並沒有考慮到上面所說的特例情況,會導致bug的產生。
我們在定義JavaBean的屬性名時,應該盡量避免屬性名的頭兩個字母中任意一個為大寫以及屬性名以”is”開頭。
javaBean變量第一二個字母大寫取不到值
跟別公司對接接口,他們傳過來的參數居然首字母是大寫,然後說他們改的話影響太大瞭,很多地方都要改,就隻能麻煩我們改瞭,於是乎,FIdNumber這個參數跟我周旋瞭半天,首字母和第二個字母都大寫的話是沒問題的,可是我就是死活取不到值,查瞭很多資料,都是講java規范的;沒啥用,皇天不負有心人,最後終於讓我找到瞭,是spring的鍋,加上@JsonProperty註解就OK瞭
@JsonProperty(value = "FIdNumber") private String fIdNumber;
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java開發中POJO和JSON互轉時如何忽略隱藏字段的問題
- 使用ObjectMapper把Json轉換為復雜的實體類
- 淺談Java內省機制
- Lombok如何快速構建JavaBean與日志輸出
- 手把手帶你粗略瞭解Java–類和對象