您的位置:首页 > 移动开发 > Objective-C

Objective-C中关于请求返回NSData数据解析成NSDictionary或NSArray的方法

2016-05-23 11:59 465 查看
1、如果后台返回的是字典或数组的data型,直接使用以下方法转换:

{
// Data 转成 字典 其中responseObject为返回的data数据
NSDictionary *resultDictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
NSLog(@"resultDictionary: %@", resultDictionary);

// Data 转成 数组 其中responseObject为返回的data数据
NSArray *resultArray = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
NSLog(@"resultArray: %@", resultArray);
}


2、以上方法打印出的字典、数组值为null 时,可能返回带有其他特殊字符串,需要将返回的data数据转成字符串:

{
NSString *resultString  =[[ NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
}


打印出来的字符串如下图所示:



看着打印出来的字符串,开头不是以‘{’(字典)或‘(’(数组)符号开头,而是一串字符,所以我们需要把多余的字符串删除。

{
NSString *changeStr = [StringObjects stringByReplacingOccurrencesOfString:@"renderReverse&&renderReverse(" withString:@""];
NSString *jsonStr = [changeStr substringToIndex:tempStr.length-1];
}
最后把解析string转data,再把data转 字典:

{
NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
}
最后把字典输出查看是否还是空。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: