json格式数据的请求处理
2016-03-15 14:58
603 查看
JSON正逐步取代XML,成为网络数据的通用格式。
从ios5开始,使用NSJSONSerialization对JSON解析。还有第三方库,比如SBJson, JSONKit, TouchJson等。从性能上说,NSJSONSerizlization最好,JSONKit其次,SBJson使用较为广泛。
加载json文件:
[objc] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
#pragma mark 加载json
- (void)loadJson
{
NSLog(@"load json");
//从web服务器加载数据
NSString *str = @"http://www.baidu.com?format=json"; //这里是乱写的
//提示:NSData本身具有同步方法,但是在实际开发中,不要使用次方法
//在使用NSData的同步方法时,无法指定超时时间,如果服务器连接不正常,会影响用户体验。
//NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
//简历NSURL
NSURL *url = [NSURL URLWithString:str];
//建立NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];
//建立NSURLConnect的同步方法加载数据
NSURLResponse *response = nil;
NSError *error = nil;
//同步加载数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//错误处理
if (data != nil) {
//下面这两句话本身没有什么意义,仅用于跟踪调试。
NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
//在处理网络数据的时候,不要将NSData转换成nsstring。
[self handlerJSONData:data];
}else if (data == nil && error == nil){
NSLog(@"空数据");
}else
{
NSLog(@"%@", error.localizedDescription);
}
}
在这里处理得到的nsdata格式的数据解析成json格式的数据。
[objc] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
#pragma mark 处理json数据
- (void)handlerJSONData:(NSData *)data
{
//json文件中的[]表示一个数据。
//反序列化json数据
/*
序列化: 将一个nsboject转换成序列数据,以便通过互联网进行传输。
反序列化:将网络上获取的数据反向生成我们需要的对象。
*/
NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", array); //json解析以后是nsarray格式的数据。
}
从ios5开始,使用NSJSONSerialization对JSON解析。还有第三方库,比如SBJson, JSONKit, TouchJson等。从性能上说,NSJSONSerizlization最好,JSONKit其次,SBJson使用较为广泛。
加载json文件:
[objc] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
#pragma mark 加载json
- (void)loadJson
{
NSLog(@"load json");
//从web服务器加载数据
NSString *str = @"http://www.baidu.com?format=json"; //这里是乱写的
//提示:NSData本身具有同步方法,但是在实际开发中,不要使用次方法
//在使用NSData的同步方法时,无法指定超时时间,如果服务器连接不正常,会影响用户体验。
//NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
//简历NSURL
NSURL *url = [NSURL URLWithString:str];
//建立NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];
//建立NSURLConnect的同步方法加载数据
NSURLResponse *response = nil;
NSError *error = nil;
//同步加载数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//错误处理
if (data != nil) {
//下面这两句话本身没有什么意义,仅用于跟踪调试。
NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
//在处理网络数据的时候,不要将NSData转换成nsstring。
[self handlerJSONData:data];
}else if (data == nil && error == nil){
NSLog(@"空数据");
}else
{
NSLog(@"%@", error.localizedDescription);
}
}
在这里处理得到的nsdata格式的数据解析成json格式的数据。
[objc] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
#pragma mark 处理json数据
- (void)handlerJSONData:(NSData *)data
{
//json文件中的[]表示一个数据。
//反序列化json数据
/*
序列化: 将一个nsboject转换成序列数据,以便通过互联网进行传输。
反序列化:将网络上获取的数据反向生成我们需要的对象。
*/
NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", array); //json解析以后是nsarray格式的数据。
}
相关文章推荐
- JS中 window的用法
- javascript 数组 去重
- javascript笔记2-value与innerHTML区别
- js面向对象
- 编写高性能的JavaScript事件(1)
- JavaScript高级程序设计学习笔记--事件(二)(事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象)
- Servlet与Jsp的区别
- 001_JavaScript 错误 - Throw、Try 和 Catch
- JS 获取日期相差天数
- 使用Gson解析复杂的json数据
- JavaScript高级程序设计学习笔记--事件(一)(事件流、事件处理程序/事件侦听器)
- 如何用JS判断推广链接所属的客服
- 7.3 Javascript:表单验证-初识正则
- js 中使用基础地址
- javascript笔记1-links
- 使用cJSON库更新json文件
- JS 交互
- 使用JSONP解决Ajax跨域访问问题
- angular js中option绑定
- javascript转义字符的问题