今天进行老项目的改版,界面已经搭建完成,就差和后台进行数据对接,但是接下来悲剧的事情发生了:获取到数据流转为json格式数据时报错了,安卓那边可以获取json数据,但是iOS端一直报错,无法进行解析
打印错误信息如下:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)"
将data数据转为字符串打印发现,在这条字符串的前面有空格部分,这部分是一些制表符
NSString *messageInfo = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"sss%@sss", messageInfo);
messageInfo = [messageInfo stringByReplacingOccurrencesOfString:@"\r\n" withString:@"" ];
messageInfo = [messageInfo stringByReplacingOccurrencesOfString:@"\n" withString : @"" ];
messageInfo = [messageInfo stringByReplacingOccurrencesOfString:@"\t" withString : @"" ];
NSLog(@"%@", messageInfo);
经过上面这些公式处理后,就可以获得json格式的字符串了
NSDictionary *responseObject = [NSString dictionaryWithJsonString:messageInfo];
/*!
* @brief 把格式化的JSON格式的字符串转换成字典
* @param jsonString JSON格式的字符串
* @return 返回字典
*/
+ (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;
}
这样就可以获取到字典格式的数据了