OC 服务器返回数据解析
来源:互联网 发布:淘宝对接平台 编辑:程序博客网 时间:2024/05/17 03:48
版权归Aaidong所有〜转载需声明〜 原贴地地址:http://blog.csdn.net/aaidong/article/details/53043938
本来我客户端网络请求用的AFNetworking,默认
manager.responseSerializer = [AFJSONResponseSerializer serializer];//设置返回数据为json
一直数据解析没出过问题,但是突然有两个接口服务器直接返回了字符串,对就是字符串,然后我这边就悲剧了
error = Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
于是就将
manager.responseSerializer = [AFHTTPResponseSerializer serializer];//设置返回数据为NSData
/** * 将未知的数据类型 转成 OC 的NSDictionary、NSArray、NSString、nil(未识别) */+ (id )resultsWithResponseObject:(id)json { if (!json || json == (id)kCFNull) { NSLog(@"原数据为nil,返回nil"); return nil; } NSData *jsonData = nil; id jsonResults = nil; if ([json isKindOfClass:[NSDictionary class]]) { NSLog(@"返回原字典"); } else if ([json isKindOfClass:[NSArray class]]) { NSLog(@"返回原数组"); } else if ([json isKindOfClass:[NSString class]]) { jsonData = [(NSString *)json dataUsingEncoding : NSUTF8StringEncoding]; } else if ([json isKindOfClass:[NSData class]]) { jsonData = json; } if (jsonData) { jsonResults = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:NULL]; if ([jsonResults isKindOfClass:[NSDictionary class]]) { NSLog(@"JSON数据返回字典"); } else if ([jsonResults isKindOfClass:[NSArray class]]) { NSLog(@"JSON数据返回数组"); } else if ([jsonResults isKindOfClass:[NSString class]]) { NSLog(@"JSON数据返回字符串"); } else if (jsonResults == nil && [json isKindOfClass:[NSString class]]) { NSLog(@"返回原字符串"); return json; } else if (jsonResults == nil && [json isKindOfClass:[NSData class]]) { // 不是数组,不是字典,还不是字符串吗? NSString *string = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding]; return string; } else { // 未识别 NSLog(@"未识别防止解析报错,原数据返回nil"); NSLog(@"未识别原数据:%@",json); return nil; } return jsonResults; } return json;}
sessionTask = [manager POST:url parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { responseObject = [self resultsWithResponseObject:responseObject]; DLog(@"post请求成功 = %@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { DLog(@"error = %@",error); }];log打印:
post请求成功 = %24x%5E%7B2%7D%2By%5E%7B2%7D%3D1%24
2 0
- OC 服务器返回数据解析
- Android解析服务器返回的Json数据
- android开发解析服务器返回的JSON数据
- 通过服务器返回来JSON歌词数据进行解析
- iOS 服务器返回NSData数据,解析为null
- 解析服务器返回的Json 数据的工具类
- iOS 服务器返回NSData数据,解析为null
- 模拟服务器返回数据
- ajax解析返回数据
- OC之JSON数据解析
- 安卓使用Gson解析服务器返回Json数组,以及java服务器怎样返回list集合的Json数据(原创)
- json解析服务器数据
- 服务器数据解析篇
- 服务器返回JSON数据使用
- 打印服务器返回数据 NSURLConnectionDelegate
- Charles 模拟服务器返回数据
- 服务器返回的json数据,通过本地解析调用SBjson的类
- android访问服务器并解析返回的XML和JSON数据
- 今天,我准备开始我的博客之路,记下我的点滴生活
- CUDA7.5 和VS2013那些事儿
- 网关,隧道,代理
- 关闭 uart0 让出给其它外设使用
- error LNK2005: 已经在*.obj中定义
- OC 服务器返回数据解析
- 结构对齐--__packed与#pragma pack
- 我的Android成长之路(7)----ListView的一些属性用途
- Go连接Hive
- 十个让你惊讶的深度学习案例
- 服务器遇到close wait解决
- 二.求生之路2服务器的搭建(Windows)
- SqlDataAdapter的增加,删除,修改
- VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall