用NSJSONSerialization解析NSURLSession中的json数据
来源:互联网 发布:java图片上传跨域请求 编辑:程序博客网 时间:2024/06/06 17:01
首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要加载一个NSURL对象,来向网站提交一个Request。到这里需要特别注意了,iOS9的时代已经来临,我们先前在旧版本中使用的某些类或者方法都已经被苹果官方弃用了。刚刚我们向网站提交了一个Request,在以往,我们是通过NSURLConnection中的sendSynchronousRequest方法来接受网站返回的Response的,但是在iOS9中,它已经不再使用了。从官方文档中,我们追根溯源,找到了它的替代品——NSURLSession类。这个类是iOS7中新的网络接口,苹果力推之,并且现在用它完全替代了NSURLConnection。关于它的具体用法,还是蛮简单的,直接上代码(ViewController.m文件):
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextView *textView;@property (nonatomic, strong) NSMutableDictionary *dic;@property (nonatomic, strong) NSString *text;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (IBAction)didClickNSJsonButton:(id)sender { //GCD异步实现 dispatch_queue_t q1 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(q1, ^{ NSURL *url = [NSURL URLWithString:@"https://api.douban.com/v2/movie/subject/25881786"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; //使用NSURLSession获取网络返回的Json并处理 NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { self.dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSString *title = [self.dic objectForKey:@"original_title"]; NSMutableArray *genresArray = [self.dic objectForKey:@"genres"]; NSString *genres = [NSString stringWithFormat:@"%@/%@",[genresArray objectAtIndex:0],[genresArray objectAtIndex:1]]; NSString *summary = [self.dic objectForKey:@"summary"]; self.text = [NSString stringWithFormat:@"电影名称:%@\n体裁:%@\n剧情介绍:%@",title,genres,summary]; //更新UI操作需要在主线程 dispatch_async(dispatch_get_main_queue(), ^{ self.textView.text = self.text; }); }]; [task resume]; });}
有时候我们在使用第三方网络访问包的时候,导入的时候会出现一堆错误,这可能是因为它不支持ARC,这时候不用慌,我们会发现大部分是ARC的问题,解决方法也挺简单,我们进入项目的Target,找到Build Phases里面的Compile Sources,接着找我们的问题源头*.m文件,双击更改它的Compiler Flags标签为“-fno-objc-arc”,再次编译,就好啦~
0 0
- 用NSJSONSerialization解析NSURLSession中的json数据
- NSJSONSerialization解析JSON数据
- 【转】NSJSONSerialization解析JSON数据
- 【转】NSJSONSerialization解析JSON数据
- NSJSONSerialization解析JSON数据 ----JSON->NSData/NSData->JSON
- IOS JSON解析 NSJSONSerialization
- json解析NSJSONSerialization方法
- JSON解析 ---- NSJSONSerialization介绍
- JSON解析之NSJSONSerialization
- iOS5.0新功能之——NSJSONSerialization解析JSON数据
- iOS5.0新功能之——NSJSONSerialization解析JSON数据
- iOS --- 使用NSJSONSerialization来解析JSON格式的数据
- iOS5.0新功能之——NSJSONSerialization解析JSON数据
- iOS5.0新功能之——NSJSONSerialization解析JSON数据
- ios中使用 NSJSONSerialization对 json数据的解析
- iOS开发1-使用NSJSONSerialization解析JSON数据
- 利用NSJSONSerialization解析Json格式
- iOS开发 JSON解析 NSJSONSerialization
- Qt学习笔记——QTableWidget使用问题
- 异常处理基础(C#参考)
- 四大内部类
- leetcode——Isomorphic Strings
- 领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?
- 用NSJSONSerialization解析NSURLSession中的json数据
- 我的linux命令笔记
- 网络状态监测
- 解决js中onkeydown事件键盘控制div移动鼠标卡顿
- nyoj 276 比较字母大小
- 速度追踪--VelocityTracker
- android版ape,flac,wav,mp3播放器
- 符号执行工具KLEE安装
- 【算法导论学习-31】分治法解决同一个数连乘问题