個人博客:http://guohuaden.com/2017/03/06/json-dataNull/
因為有遇到過類似情況,所以就想到了一些解決方法,並且實踐了一下,這里簡單的做個記錄。
注:有看到不少的評價,有說后台責任,也有說怪移動端沒有做容錯處理。我這里就事論事的說下,移動端從服務器得到的數據中確實是不應該包含null的,因為這本身就是不合理的。(當然,我的就事論事是站在iOS立場上說的,這個無可厚非)。
下面👇說一下想到的幾種方法:
一、 對於所有使用到的json中的對象做判斷(當然這是最笨的方法)
NSString *msg ; if ([str isKindOfClass: [NSNull class]]){ NSLog(@"str 為空!"); } //或者使用[str isEqual:[NSNull null]]
為什么首先說這種方法呢,大抵是因為這個方法的工作量比較大吧。但有時候你是完全不能避免這種情況的,尤其是在老舊的項目中,當你看到項目中所有的解析都是KVO模式時,你就知道一個個去判斷是多么讓人糾結的事情了。
二、使用JSONModel等第三方json解析庫
JSONModel有專門針對對象為null的處理,使其返回為空。iOS移動端賦值為空,打印為nil。
三、有一個專門針對數據為null的類擴展,NullSafe
這個庫是專門處理對象為null的。只有一個.m文件。使用也簡單,因為你只需要添加到項目中就可以了,不再需要引入頭文件等其他任意操作。
這里放一個我測試是使用的簡單demo