[解決問題]json過來的信息,少了一個Boolean的值,其他字段都解析正常,就是Boolean解析的值是null

java類是長這樣的
在這裏插入圖片描述
然後idea自動生成get和set方法
在這裏插入圖片描述
解析的字段都有值,就是isHit這個布爾沒有值是null
打印這個對象的toString方法
結果是:{faceId=‘90240’, repositoryId=‘null’, isHit=null, catchTime=‘2020-06-23 16:41:45’}
很奇怪爲什麼這個屬性(字段)沒有值呢?

百度搜索關鍵字:json boolean set get is
得到以下結果:
原因

  • 因爲boolean值屬性沒有按照JavaBean規範進行命名。JavaBean規範這樣說:如果一個屬性是boolean值,假設名爲property,則其setter方法應該是setProperty,其getter方法應該爲isProperty。
  • 當我們對isTest這個boolean類型的屬性使用Eclipse自動生成setter/getter方法時,其生成的getter方法時isTest,這樣的話,fastjson就會以爲這個屬性是test,從而輸出結果是test。
    解決
  • 方式1:規範boolean值命名,將isTest調整爲test,這樣其結果爲{“test”:false,”url”:true}
  • 方式2:規範boolean值的getter方法,將isTest調整爲isIsTest方法,這樣其結果爲{“isTest”:false,”url”:true}

好吧,是idea生成的這個有問題,於是改成下面這樣,補充上Is

在這裏插入圖片描述
解析結果就正常了
{faceId=‘90240’, repositoryId=‘null’, isHit=true, catchTime=‘2020-06-23 17:47:54’}

總結:遇到一些字段爲isXxxx的布爾屬性,要特別留意get和set方法的名稱,要補齊,不然會出現bug

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章