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);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!