IOS json 解析遇到错误问题解决办法
概要:
ErrorDomain=NSCocoaErrorDomainCode=3840"Theoperationcouldn'tbecompleted.(Cocoaerror3840.)"(Unescapedcontrolcharacteraroundcharacter1419.)UserInfo=0x1563cdd0{NSDebugDescription=Unescapedcontrolcharacteraroundcharacter1419.}
之前解析json的时候都是标准格式,json数据当中没有\n\r\t等制表符。
今天在解析的时候发现json解析时好时坏,用在线json解析也米有问题。找了半天终于发现是制表符在作怪,由于标准的json解析是不允许有这几个制表符的。所以在收到保温的时候我们需要把这几个制表符给过滤掉。
NSString*responseString=[requestresponseString]; responseString=[responseStringstringByReplacingOccurrencesOfString:@"\r\n"withString:@""]; responseString=[responseStringstringByReplacingOccurrencesOfString:@"\n"withString:@""]; responseString=[responseStringstringByReplacingOccurrencesOfString:@"\t"withString:@""]; NSLog(@"responseString=%@",responseString); SBJsonParser*parser=[[[SBJsonParseralloc]init]autorelease]; idreturnObject=[parserobjectWithString:responseString]; NSDictionary*userInfo=nil; NSArray*userArr=nil; if([returnObjectisKindOfClass:[NSDictionaryclass]]){ if(userInfo){ [userArrrelease]; } userInfo=(NSDictionary*)returnObject; } elseif([returnObjectisKindOfClass:[NSArrayclass]]){ userArr=(NSArray*)returnObject; } NSError*e=nil;
//系统自带的解析方式。
NSDictionary*userInfo=[NSJSONSerializationJSONObjectWithData:[jsonStringdataUsingEncoding:NSUTF8StringEncoding]options:NSJSONReadingMutableLeaveserror:&e]; if(e){ NSLog(@"%@",e); }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!