白羽
2019-01-23
来源 :网络
阅读 1856
评论 0
摘要:本文将带你了解IOS开发入门iOS 服务器返回NSData数据,解析为null,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS 服务器返回NSData数据,解析为null,希望本文对大家学IOS有所帮助。
iOS
服务器返回NSData数据,解析为null,通常情况下,使用下面的方法都能接收到服务器数据都能正常解析为NSDictionary(responseObject为服务器返回的二进制数据)。
NSDictionary * dicJson = [NSJSONSerialization
JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers
error:nil];
但是在一些特殊的情况下,我们会遇到responseObject有数据,但是解析为我们想要的格式的时候为null(NSDictionary,NSS
tring,NSArray我都尝试过结果都一样),在遇到这种的情况下,也许是服务器的编码格式和你的编码格式不一致(比如服务器用的GBK而你用的UTF-8),那么就会出现这种明明有数据确解析为null的结果,可以用以下方法进行转码后解析(responseObject依旧为服务器返回的二进制数据):
//定义GBK编码格式NSStringEncoding enc =
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);//GBK格式接收数据并进行转换NSString
* retStr = [[NSString alloc]initWithData:responseObject
encoding:enc]; NSData * jsonData = [retStr
dataUsingEncoding:enc]; NSString * jsonStr = [[NSString
alloc]initWithData:jsonData encoding:enc];//将数据转为UTF-8NSData * data =
[jsonStr dataUsingEncoding:NSUTF8StringEncoding];//解析NSDictionary * dicJson =
[NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableContainers error:nil];
下面再举一解析例子,base64解码
eyJlcnJvckNvZGUiOi05OSwiZXJyb3JNc2ciOiLWuMHutO3O8yIsInJldE1zZyI6ItK1zvGxqM7E0uyzoyJ9
【这个用默认UTF-8编码转出来为null】
- (void)decodeBase64{ NSStringEncoding
enc =
CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSData
*decodedData = [[NSData
alloc]initWithBase64EncodedString:@"eyJlcnJvckNvZGUiOi05OSwiZXJyb3JNc2ciOiLWuMHutO3O8yIsInJldE1zZyI6ItK1zvGxqM7E0uyzoyJ9"
options:0]; NSString *decodedString = [[NSString
alloc] initWithData:decodedData
encoding:enc]; NSLog(@"%@", decodedString);}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号