解決JSON數(shù)據(jù)因為null導(dǎo)致數(shù)據(jù)加載失敗的方法
一、首先分析問題:
使用NSJSONSerialization或者AFN框架的AFHTTPSessionManager(底層也是NSJSONSerialization)將NSData數(shù)據(jù)轉(zhuǎn)化成OC對象,有時會出現(xiàn)URL正確,加載數(shù)據(jù)任然會報錯:
reason: '-[NSNull length]: unrecognized selector sent to instance
分析原因發(fā)現(xiàn),轉(zhuǎn)化出來的OC對象中含有null.所以,NSNull沒有l(wèi)ength方法,所以會報找不到方法錯誤。
二、解決辦法:將"null"替換成“ ”。
1.先將NSData數(shù)據(jù)轉(zhuǎn)化成NSString;
2.再對轉(zhuǎn)化好的NSString進行替換;
3.替換好的NSSting再轉(zhuǎn)化成NSData;
4.NSData轉(zhuǎn)化成OC對象
下面提供一個封裝好的方法,以后直接使用就好了
//替換數(shù)據(jù)中的空字符串 + (NSArray*)arrayWithNoNullArray:(NSArray*)originalArray { //array -> string NSData *data = [NSJSONSerialization dataWithJSONObject:originalArray options:0 error:nil]; NSString *str =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; //替換 NSString *nStr = [str stringByReplacingOccurrencesOfString:@"null" withString:@"\"\""]; //string -> array NSData *nData =[nStr dataUsingEncoding:NSUTF8StringEncoding]; return [NSJSONSerialization JSONObjectWithData:nData options:0 error:nil]; }
傳入一個含有null的OC數(shù)組,直接返回替換過的新數(shù)組。用不含null的數(shù)組再去加載數(shù)據(jù),就不會有問題了。
好了,以上就是解決JSON數(shù)據(jù)因為null導(dǎo)致數(shù)據(jù)加載失敗的方法,希望對有需要的朋友們有所幫助,如果有疑問打擊可以留言交流。
- Javascript中判斷一個值是否為undefined的方法詳解
- JS中call/apply、arguments、undefined/null方法詳解
- 詳解javascript中原始數(shù)據(jù)類型Null和Undefined
- javascript中undefined與null的區(qū)別
- JavaScript中Null與Undefined的區(qū)別解析
- js判斷輸入字符串是否為空、空格、null的方法總結(jié)
- iOS中json解析出現(xiàn)的null,nil,NSNumber的解決辦法
- js的Boolean對象初始值示例
- Javascript Boolean、Nnumber、String 強制類型轉(zhuǎn)換的區(qū)別詳細介紹
- JavaScript基本類型值-Undefined、Null、Boolean
相關(guān)文章
IOS 通過tag刪除動態(tài)創(chuàng)建的UIButton
這篇文章主要介紹了IOS 通過tag刪除動態(tài)創(chuàng)建的UIButton的相關(guān)資料,需要的朋友可以參考下2017-03-03iOS16使用SwiftUI Charts創(chuàng)建折線圖實現(xiàn)實例
這篇文章主要為大家介紹了iOS16使用SwiftUI Charts創(chuàng)建折線圖實現(xiàn)實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11iOS Webview自適應(yīng)實際內(nèi)容高度的4種方法詳解
這篇文章主要介紹了iOS Webview自適應(yīng)實際內(nèi)容高度的4種方法詳解,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09