JsonObject的屬性與值的判空(Null值)處理方式
問(wèn)題現(xiàn)象
之前在項(xiàng)目中遇到一個(gè)沒有遇到過(guò)的問(wèn)題,就是在使用 == null 來(lái)對(duì)jsonObject這個(gè)對(duì)象的id屬性進(jìn)行null值判空時(shí)會(huì)發(fā)生一個(gè)問(wèn)題:
當(dāng)前端不傳入該屬性 ({}) 時(shí): jsonObject.get("id") == null 結(jié)果為: true
但當(dāng)前端傳入?yún)?shù)null ({"id" : null}) 時(shí): jsonObject.get("id") == null 結(jié)果為: false
也就是說(shuō)當(dāng) 前端傳入?yún)?shù)"id" 不管是否傳入 null, 則 jsonObject.get("id") 就不會(huì)是 null !!!!!!
問(wèn)題分析
一開始,我確實(shí)以為JsonObject的判空操作應(yīng)該和一般的Object對(duì)象是一樣的,在了解了一下JsonObject這個(gè)對(duì)象的配置之后,才知道:
原來(lái)JsonObject有兩個(gè)判空方式:
- 第一種:在前端不傳入該屬性時(shí):
通過(guò) jsonObject.get("id") == null 進(jìn)行判空
- 第二種:在前端傳入?yún)?shù)為null值時(shí):
通過(guò) jsonObject.get("orgId").isJsonNull() 方法 來(lái)判空.
總結(jié): 其實(shí)這兩種情況是不同的:
- 第一種是:前端不傳入該屬性;
這個(gè)時(shí)候 jsonObject.get("id") 獲取這個(gè)屬性對(duì)象{key:value} 就是null, 因此只能用 == null 來(lái)判空!
- 第二種是:前端傳入?yún)?shù)為null值;
這個(gè)時(shí)候 jsonObject.get("id") 可以獲取這個(gè)屬性對(duì)象{key:value}, 只是這個(gè)對(duì)象的value值為 null, 但 key 依然是 id, 所以這個(gè)對(duì)象不為null,因此只能用 isJsonNull() 方法 來(lái)判空
解決方法
將
if ( jsonObject.get("id") != null )改為:
if ( jsonObject.get("id") != null && !jsonObject.get("id").isJsonNull() )總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA SSM整合Redis項(xiàng)目實(shí)例 附源碼
今天給大家普及IDEA SSM整合Redis項(xiàng)目實(shí)例,包括pom.xml 配置和spring-redis.xml 配置代碼,代碼也很簡(jiǎn)單,通過(guò)項(xiàng)目實(shí)際案例能更好的幫助大家理解,需要的朋友可以參考下2021-06-06
SpringBoot處理HTTP請(qǐng)求的詳細(xì)流程
這篇文章主要介紹了SpringBoot處理HTTP請(qǐng)求的詳細(xì)流程,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05
SpringCloudAlibaba整合服務(wù)網(wǎng)關(guān)GateWay教程
文章介紹了Spring Cloud Gateway和Zuul的區(qū)別,并詳細(xì)描述了如何使用Gateway進(jìn)行服務(wù)轉(zhuǎn)發(fā)和自定義TokenFilter實(shí)現(xiàn)參數(shù)攔截訪問(wèn)2026-01-01
Hadoop之NameNode Federation圖文詳解
今天小編就為大家分享一篇關(guān)于Hadoop之NameNode Federation圖文詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
Mybatis Generator自動(dòng)生成對(duì)應(yīng)文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Mybatis Generator自動(dòng)生成對(duì)應(yīng)的文件的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09
java利用jieba進(jìn)行分詞的實(shí)現(xiàn)
本文主要介紹了在Java中使用jieba-analysis庫(kù)進(jìn)行分詞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

