杏仁丶的iOS学习专题iOS技术专题iOS Developer

iOS:从服务器请求数据,解析Json字符串报错问题的处理

2016-05-08  本文已影响1837人  斯文_7

今天进行老项目的改版,界面已经搭建完成,就差和后台进行数据对接,但是接下来悲剧的事情发生了:获取到数据流转为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;
}

这样就可以获取到字典格式的数据了

上一篇下一篇

猜你喜欢

热点阅读