NSJSONSerialization介绍

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


  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 \r\n");  
  18.         return;  
  19.     }  
  20.     NSArray *songArray = [json objectForKey:@"song"];  
  21.     NSLog(@"song collection: %@\r\n",songArray);  
  22.   
  23.     _song = songArray;  
  24.     self.songIndex = 0;  
  25.     NSDictionary *song = [songArray objectAtIndex:0];  
  26.     NSLog(@"song info: %@\t\n",song);  
  27. }  

Foundation对象转换为json数据

  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.     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值