近來(lái)囤萤,在與服務(wù)端聯(lián)調(diào)時(shí)發(fā)現(xiàn)個(gè)問(wèn)題苟弛,總是拿不到數(shù)據(jù),后來(lái)服務(wù)端發(fā)現(xiàn)客戶端有個(gè)值為字符串"null"傳過(guò)去了阁将,服務(wù)端解析不了膏秫,導(dǎo)致該問(wèn)題。
那為什么會(huì)傳字符串"null"呢做盅?原來(lái)是服務(wù)端下發(fā)的該值為null缤削,但通過(guò)JSONObject.optString方法進(jìn)行解析時(shí),會(huì)把null轉(zhuǎn)變?yōu)?null"字符串吹榴,故而出現(xiàn)該問(wèn)題亭敢。另外,其getString方法也有這個(gè)問(wèn)題图筹。如:json數(shù)據(jù):
{
"title": null,
"autoPlay": 0
}
則通過(guò)optString或者getString拿到的title為"null"帅刀,則錯(cuò)誤。
那么應(yīng)如何避免呢远剩?一個(gè)是服務(wù)端不下發(fā)null扣溺,防止該問(wèn)題; 第二種方法則是客戶端拿到數(shù)據(jù)后進(jìn)行校正,校正方法有二:1瓜晤、optString后進(jìn)行判斷是不是"null"字符串锥余,是的話則置空;2、在調(diào)用optString前先通過(guò)JSONObject.isNull這個(gè)方法進(jìn)行檢測(cè)痢掠,如果不是null再取值驱犹,以防止得到"null"字符串嘲恍。