JsonObject的屬性與值的判空(Null值)處理方式
問題現(xiàn)象
之前在項目中遇到一個沒有遇到過的問題,就是在使用 == null 來對jsonObject這個對象的id屬性進行null值判空時會發(fā)生一個問題:
當(dāng)前端不傳入該屬性 ({}) 時: jsonObject.get("id") == null 結(jié)果為: true
但當(dāng)前端傳入?yún)?shù)null ({"id" : null}) 時: jsonObject.get("id") == null 結(jié)果為: false
也就是說當(dāng) 前端傳入?yún)?shù)"id" 不管是否傳入 null, 則 jsonObject.get("id") 就不會是 null !!!!!!
問題分析
一開始,我確實以為JsonObject的判空操作應(yīng)該和一般的Object對象是一樣的,在了解了一下JsonObject這個對象的配置之后,才知道:
原來JsonObject有兩個判空方式:
- 第一種:在前端不傳入該屬性時:
通過 jsonObject.get("id") == null 進行判空
- 第二種:在前端傳入?yún)?shù)為null值時:
通過 jsonObject.get("orgId").isJsonNull() 方法 來判空.
總結(jié): 其實這兩種情況是不同的:
- 第一種是:前端不傳入該屬性;
這個時候 jsonObject.get("id") 獲取這個屬性對象{key:value} 就是null, 因此只能用 == null 來判空!
- 第二種是:前端傳入?yún)?shù)為null值;
這個時候 jsonObject.get("id") 可以獲取這個屬性對象{key:value}, 只是這個對象的value值為 null, 但 key 依然是 id, 所以這個對象不為null,因此只能用 isJsonNull() 方法 來判空
解決方法
將
if ( jsonObject.get("id") != null )
改為:
if ( jsonObject.get("id") != null && !jsonObject.get("id").isJsonNull() )
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何將JAVA程序制作成可以直接執(zhí)行的exe文件
這篇文章主要介紹了詳解如何將JAVA程序制作成可以直接執(zhí)行的exe文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java關(guān)鍵字instanceof用法及實現(xiàn)策略
instanceof 運算符是用來在運行時判斷對象是否是指定類及其父類的一個實例。這篇文章主要介紹了Java關(guān)鍵字instanceof用法解析,需要的朋友可以參考下2020-08-08