您的位置:首页 > Web前端 > JavaScript

json格式数据的请求处理

2016-03-15 14:58 603 查看
JSON正逐步取代XML,成为网络数据的通用格式。

从ios5开始,使用NSJSONSerialization对JSON解析。还有第三方库,比如SBJson, JSONKit, TouchJson等。从性能上说,NSJSONSerizlization最好,JSONKit其次,SBJson使用较为广泛。

加载json文件:

[objc] view
plain copy







#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







#pragma mark 处理json数据

- (void)handlerJSONData:(NSData *)data

{

//json文件中的[]表示一个数据。

//反序列化json数据

/*

序列化: 将一个nsboject转换成序列数据,以便通过互联网进行传输。

反序列化:将网络上获取的数据反向生成我们需要的对象。

*/

NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

NSLog(@"%@", array); //json解析以后是nsarray格式的数据。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: