zoukankan      html  css  js  c++  java
  • NSJSONSerialization

    ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。详情见这里。既然apple为我们提供了这么良好的工具,我们没理由不用吧。

      NSJSONSerialization提供了将JSON数据转换为Foundation对象(一般都是NSDictionary和NSArray)和Foundation对象转换为JSON数据(可以通过调用isValidJSONObject来判断Foundation对象是否可以转换为JSON数据)。

      下面提供一个从豆瓣电台下载的json数据转换的代码

    [javascript] view plaincopy
     
    1. View Code   
    2.  
    3. #define kGlobalQueue    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)  
    4. #define kDoubanUrl      @"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79"  
    5. -(void) loadJsonData:(NSURL *)url  
    6. {  
    7.     dispatch_async(kGlobalQueue, ^{  
    8.         NSData *data = [NSData dataWithContentsOfURL:url];  
    9.         [self performSelectorOnMainThread:@selector(parseJsonData:) withObject:data waitUntilDone:NO];  
    10.     });  
    11. }  
    12. -(void) parseJsonData:(NSData *)data  
    13. {  
    14.     NSError *error;  
    15.     NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];  
    16.     if (json == nil) {  
    17.         NSLog(@"json parse failed  ");  
    18.         return;  
    19.     }  
    20.     NSArray *songArray = [json objectForKey:@"song"];  
    21.     NSLog(@"song collection: %@ ",songArray);  
    22.   
    23.     _song = songArray;  
    24.     self.songIndex = 0;  
    25.     NSDictionary *song = [songArray objectAtIndex:0];  
    26.     NSLog(@"song info: %@ ",song);  
    27. }  

    Foundation对象转换为json数据

    [javascript] view plaincopy
     
      1. View Code   
      2.   
      3. NSDictionary *song = [NSDictionary dictionaryWithObjectsAndKeys:@"i can fly",@"title",@"4012",@"length",@"Tom",@"Singer", nil];  
      4.     if ([NSJSONSerialization isValidJSONObject:song])  
      5.     {  
      6.         NSError *error;  
      7.         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:song options:NSJSONWritingPrettyPrinted error:&error];  
      8.         NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];  
      9.         NSLog(@"json data:%@",json);  
      10.     }
  • 相关阅读:
    Recommended Books for Algo Trading in 2020
    Market Making is simpler than you think!
    Top Crypto Market Makers of 2020
    Top Crypto Market Makers, Rated and Reviewed
    爬取伯乐在线文章(五)itemloader
    爬取伯乐在线文章(四)将爬取结果保存到MySQL
    爬取伯乐在线文章(三)爬取所有页面的文章
    爬取伯乐在线文章(二)通过xpath提取源文件中需要的内容
    爬取伯乐在线文章(一)
    爬虫去重策略
  • 原文地址:https://www.cnblogs.com/chengjun/p/4958346.html
Copyright © 2011-2022 走看看