IOS开发入门之iOS 服务器返回NSData数据,解析为null
白羽 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved