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

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

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

  

View Code

#define kGlobalQueue    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
#define kDoubanUrl      @"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79"
-(void) loadJsonData:(NSURL *)url
{dispatch_async(kGlobalQueue, ^{NSData *data = [NSData dataWithContentsOfURL:url];[self performSelectorOnMainThread:@selector(parseJsonData:) withObject:data waitUntilDone:NO];});
}
-(void) parseJsonData:(NSData *)data
{NSError *error;NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];if (json == nil) {NSLog(@"json parse failed \r\n");return;}NSArray *songArray = [json objectForKey:@"song"];NSLog(@"song collection: %@\r\n",songArray);_song = songArray;self.songIndex = 0;NSDictionary *song = [songArray objectAtIndex:0];NSLog(@"song info: %@\t\n",song);
}

  Foundation对象转换为json数据

View Code

NSDictionary *song = [NSDictionary dictionaryWithObjectsAndKeys:@"i can fly",@"title",@"4012",@"length",@"Tom",@"Singer", nil];if ([NSJSONSerialization isValidJSONObject:song]){NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:song options:NSJSONWritingPrettyPrinted error:&error];NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];NSLog(@"json data:%@",json);}

转载于:https://www.cnblogs.com/touchme/archive/2012/05/05/2484709.html

NSJSONSerialization介绍相关推荐

  1. iOS之苹果自带的json解析NSJSONSerialization(序列化)

    NSJSONSerialization介绍: NSJSONSerialization提供了将JSON数据转换为Foundation对象(一般都是NSDictionary和NSArray)和Founda ...

  2. IOS学习之 网络编程(10)--简单介绍ASI框架的使用

    转载自 http://www.cnblogs.com/wendingding/p/3950027.html 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是A ...

  3. ios 关于常用的一些第三方框架的介绍

    本文转载自:http://blog.csdn.net/xiaoyuertongxue/article/details/46982879 图像:  1.图片浏览控件MWPhotoBrowser 实现了一 ...

  4. iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)

    图像:  1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.  ...

  5. (转)iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  6. 常用第三方开源框架介绍

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  7. IOS-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34      阅读:533      评论:0      收藏:0      [点我收藏+] ...

  8. OS开发-常用第三方开源框架介绍

    为什么80%的码农都做不了架构师?>>>    OS开发-常用第三方开源框架介绍 http://blog.csdn.net/meiwenjie110/article/details/ ...

  9. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

最新文章

  1. php webstorm,webstorm和phpstorm的区别
  2. 在线图表编辑工具 draw.io 10.6.2 版本发布
  3. 如何控制订单发料后不能删除组件
  4. C++基类与派生类的转换与多态性
  5. Flowable 数据库表结构 ACT_RE_DEPLOYMENT
  6. slice,Array.prototype.slice,Array.protyotype.slice.call
  7. 用python实现一个按需生成用于vim跳转的tags文件的小程序
  8. [导入]8.3赛车频道活动
  9. .7 二叉查找树的 建立 insert search remove 操作
  10. C Tricks(九)—— 获取文件大小与申请数组空间
  11. 腾讯新浪通过IP地址获取当前地理位置(省份)的接口
  12. Flutter BindingBase服务扩展浅析
  13. VS2015 vs2017 密钥
  14. 【NLP】华为发布「国产Copilot内核」PanGu-Coder,而且真的能用中文哦!
  15. SAP内部培训效果考察表存档
  16. 二代征信在风控流程中的使用
  17. php tsrmg,php内核分析(二)-ZTS和zend_try
  18. SEO网站优化是什么
  19. 计算机控制系统++康波,计算机控制系统(康波)第3章习题部分参考解答12[1]
  20. 使用PlantUML插件来做图

热门文章

  1. python开发框架大全_最受欢迎 Top 12 Python 开源框架,你都用过吗?
  2. java htmlparser 使用教程_HTMLParser使用详解(1)
  3. mplab x ide 中文使用手册_中文文档:MPLAB ICD 4在线调试器用户指南
  4. cesium加载entity图片缩放_Cesium中级教程4 – 空间数据可视化(二)
  5. Java 进栈出栈的过程
  6. 计算机办公价格,公职人员,你的办公电脑最少要用6年,而价格不能超过这个数?...
  7. python列表生成时 if_Python列表生成式
  8. 深度linux安装好上不了网,Deepin Linux 无法上网
  9. 【OpenCV 例程200篇】05. 图像的属性(np.shape)
  10. php中update()函数,update_option()函数