近来,在与服务端联调时发现个问题,总是拿不到数据,后来服务端发现客户端有个值为字符串"null"传过去了,服务端解析不了,导致该问题。
那为什么会传字符串"null"呢?原来是服务端下发的该值为null,但通过JSONObject.optString方法进行解析时,会把null转变为"null"字符串,故而出现该问题。另外,其getString方法也有这个问题。如:json数据:
{
"title": null,
"autoPlay": 0
}
则通过optString或者getString拿到的title为"null",则错误。
那么应如何避免呢?一个是服务端不下发null,防止该问题; 第二种方法则是客户端拿到数据后进行校正,校正方法有二:1、optString后进行判断是不是"null"字符串,是的话则置空;2、在调用optString前先通过JSONObject.isNull这个方法进行检测,如果不是null再取值,以防止得到"null"字符串。