网络获取json解析

来源:互联网 发布:按option无法切换mac 编辑:程序博客网 时间:2024/05/21 11:03

JSON正逐步取代XML,成为网络数据的通用格式。

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


加载json文件:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #pragma mark 加载json  
  2. - (void)loadJson  
  3. {  
  4.     NSLog(@"load json");  
  5.     //从web服务器加载数据  
  6.     NSString *str = @"http://www.baidu.com?format=json";  //这里是乱写的  
  7.     //提示:NSData本身具有同步方法,但是在实际开发中,不要使用次方法  
  8.     //在使用NSData的同步方法时,无法指定超时时间,如果服务器连接不正常,会影响用户体验。  
  9.     //NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];  
  10.     //简历NSURL  
  11.     NSURL *url = [NSURL URLWithString:str];  
  12.     //建立NSURLRequest  
  13.     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];  
  14.     //建立NSURLConnect的同步方法加载数据  
  15.     NSURLResponse *response = nil;  
  16.     NSError *error = nil;  
  17.     //同步加载数据  
  18.     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];  
  19.     //错误处理  
  20.     if (data != nil) {  
  21.         //下面这两句话本身没有什么意义,仅用于跟踪调试。  
  22.         NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];  
  23.         NSLog(@"%@", result);  
  24.           
  25.         //在处理网络数据的时候,不要将NSData转换成nsstring。  
  26.         [self handlerJSONData:data];  
  27.     }else if (data == nil && error == nil){  
  28.         NSLog(@"空数据");  
  29.     }else  
  30.     {  
  31.         NSLog(@"%@", error.localizedDescription);  
  32.     }  
  33. }  
在这里处理得到的nsdata格式的数据解析成json格式的数据。
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #pragma mark 处理json数据  
  2. - (void)handlerJSONData:(NSData *)data  
  3. {  
  4.     //json文件中的[]表示一个数据。  
  5.     //反序列化json数据  
  6.     /* 
  7.      序列化: 将一个nsboject转换成序列数据,以便通过互联网进行传输。 
  8.      反序列化:将网络上获取的数据反向生成我们需要的对象。 
  9.      */  
  10.     NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];  
  11.       
  12.     NSLog(@"%@", array);  //json解析以后是nsarray格式的数据。  
  13. }  
0 0
原创粉丝点击