美文网首页杏仁丶的iOS学习专题iOS技术专题iOS Developer
iOS:从服务器请求数据,解析Json字符串报错问题的处理

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

作者: 斯文_7 | 来源:发表于2016-05-08 23:13 被阅读1837次

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

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

    相关文章

      网友评论

      • 程序员学园:可以用在线助手这个json在线格式化工具 http://www.it399.com/jsonFomat.jsp 校验一下看是不是正确的json格式字符串如果不是,根据错误提示修改即可
        斯文_7:@陈守印 有一些字符在这些校验器里面,是排查不出来的,就像那些数据,在java中完全没问题,在OC中就是转换出错
      • 系统盘:有时候空格换行符很烦恼,一不小心发现不了
        程序员学园:@系统盘 可以用在线助手这个json在线格式化工具 http://www.it399.com/jsonFomat.jsp 校验一下看是不是正确的json格式字符串如果不是,根据错误提示修改即可
      • Raybon_lee:还有个charset 也可以过滤空格,不过总的来说还是后台不够严谨
        :joy:

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

      本文链接:https://www.haomeiwen.com/subject/ycidrttx.html