ios json解析失敗:Error Domain=NSCocoaErrorDomain Code=3840 "No value."

在一個項目中同時有JAVA后臺接口和PHP后臺接口,我使用了兩套網(wǎng)絡(luò)請求框架,一套是原生的用來請求JAVA后臺數(shù)據(jù),一套是使用的PPNetworkhelper用來請求PHP接口數(shù)據(jù),可以應(yīng)對項目所需。

在進行測試的時候發(fā)現(xiàn)一個問題,在iPhone 5s上能夠正常請求JAVA后臺數(shù)據(jù),在iPhone 6s Plus上則出現(xiàn)了json數(shù)據(jù)解析錯誤,真的是沒有想到,錯誤信息:Error Domain=NSCocoaErrorDomain Code=3840 "No value."。這個錯誤我前面在第一次接JAVA接口的時候已經(jīng)碰到過,是因為無法正常解析JAVA后臺返回的json數(shù)據(jù)導(dǎo)致的,為什么不能解析數(shù)據(jù),我和后臺大胸弟一起研究了一下打印出來的數(shù)據(jù),使用在線json解析工具也不能解析出來??梢源_定肯定是數(shù)據(jù)格式出問題了,發(fā)現(xiàn)在拼接數(shù)據(jù)的時候錯誤。

數(shù)據(jù)里包含 \n \r \t 等制表符,或者單引號'',等特俗符號都會引起解析錯誤,所以需要把數(shù)據(jù)中的特俗符號都過濾掉。


NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //去除掉首尾的空白字符和換行字符

str = [str stringByReplacingOccurrencesOfString:@"\r" withString:@""];

str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@""];

str = [str stringByReplacingOccurrencesOfString:@"\\"? withString:@""];

str = [str stringByReplacingOccurrencesOfString:@"\''"? withString:@""""];

NSDictionary *mydic = [weakself dictionaryWithJsonString:str];


- (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {

if (jsonString == nil) {

return nil;

}

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

NSError *err;

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];

if(err) {

NSLog(@"json解析失?。?@",err);

return nil;

}

return dic;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容