NSJSONSerialization介绍

2023-11-08

 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);
    }


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSJSONSerialization介绍 的相关文章

随机推荐

  • SQL注入类型已经一些小技巧

    目录 类型 1 联合注入 2 报错注入 2 1 floor 2 2 updatexml 2 3 extractvalue 3 bool注入 4 sleep注入 时间盲注 注入的一些小技巧 information schema过滤与无列名注入
  • 【Qt 6.2 参考手册】QT6.2所有模块

    Qt 6 2 所有模块 Qt 6 2 3 参考文档 内容 Qt基础模块 Qt扩展模块 接下来去哪里 所有模块 Qt基础模块 Qt基础模块在所有平台上定义了Qt的基础 它们可在所有受支持的开发平台和经过测试的目标平台上使用 除了测试模块将保持
  • Linux(centOS7)常用命令

    linux常用命令 监控linux系统情况 查看进程 查看占用的端口 服务状态 修改ip 临时修改ip 永久修改ip 查找文件 权限 包 安装图形界面 查看文件 防火墙 文件编辑 脚本 系统 scp传输 系统用户 修改文件sed i wc命
  • PHP问题:Deprecated: Function split() is deprecated in解决方法

    今天在测试php网站程序的时候 用 分割数组的时候突然出现Deprecated Function split is deprecated in 的错误提示 意思就是 函数方法split 已经被弃用了 然后查了下php文档 原来是随着版本的更
  • zabbix 钉钉&微信&企微告警(动作&操作&消息内容模板)

    一 环境配置 1 配置zabbix服务端 2 配置监控主机 监控项 监控模板 zabbix配置安装 this page is used to test the proper operation of 疯飙的蜗牛的博客 CSDN博客 二 触发
  • SRAMC spec

    SRAMC规范分析 AHB SRAMC这个项目是选取自SOC的一部分 通过AHB总线进行读写操作 实现了下面的功能 功能点 8个8x8k的设计 8 16 32位的读写 低功耗bank core选择 单周期读写 dft bist测试 模块 包
  • Docker 部署学习(三),构建redis服务,并启用密码认证(基于docker pull redis)

    参考 docker官方redis文档 1 有特殊版本需求的可以查看redis镜像tag版本 2 选择最新版 latest docker pull redis latest 3 启动容器并设置密码 docker run name redis
  • 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》

    本文来自网易云社区 对于很多人来讲 仿佛昨天才燃起来的人工智能之火 转眼间烧遍了各个角落 如今我们的生活中 处处渗透着人工智能 10月16日 2018年 AIIA人工智能开发者大会在苏州举办 网易云易盾CTO朱浩齐将出席本次大会 AI安全分
  • springboot整合log4j

    1 log4j文件
  • Maven和Tycho

    点进来读这篇文章的朋友 我假定你已经知道maven的基本知识 也知道Eclipse 知道Eclipse是基于OSGi 初步了解Eclipse插件开发或者说OSGi模块化开发 如果对这些知识不了解 甚至完全没有听过 那请绕开本文 Maven简
  • mysql连接不上数据库

    1 打开 DOS 窗口 输入 mysql 连接命令时 提示报错 Cannot connect to MySQL server on localhost 10061 如下图 2 上面问题原因 可能是本地服务没开 需要开启本地服务 按 Win
  • 高考扎推报网络安全专业,非科班的你还在观望等机会流失吗?

    又是一年高考季 在等待成绩出来的这段时间 所有考生和家长都在积极地研究着专业报考这个大难题 尤其是理工科 选好一个专业是非常重要的 专业对于普通家庭的孩子来说就是你安身立命的根本 今年的就业形势让家长们都绷紧了神经 大家都对专业选择更加的慎
  • unity3d : unity Editor 已停止工作

    问题 安装unity后打开unity就会出现 unity Editor 已停止运行 原因 1 如果是ghost win7 系统 这个系统不稳定 可以重装 win7旗舰版试一试 2 看看你的系统是不是64位sp1 如果不是的话 请安装sp1后
  • ES的嵌套查询和嵌套聚合

    1 想要实现嵌套查询和嵌套聚合 首先需要在索引里面设置某个属性是嵌套类型 一般是List type nested 2 API的demo 嵌套查询 使用场景 需要根据list中的两个字段以and的关系进行查询 构造布尔查询 BoolQuery
  • 论文报告中如何优雅的粘贴代码(表格版)

    在经过前两天的课设摧残后 总结一个粘贴代码的小方法 这里用的是表格填充式 我觉得还算美观 如果你想代码像下面这样保持高亮的话 一共两个方法 第一个是去网站上做高亮代码 代码在线高亮工具 将高亮美化的代码一键粘贴到 Word 或 OneNot
  • http 一次跨域请求出现 OPTIONS 请求的问题及解决方法

    在正式跨域的请求前 浏览器会根据需要 发起一个 PreFlight 也就是Option请求 用来让服务端返回允许的方法 如get post 被跨域访问的Origin 来源 或者域 还有是否需要Credentials 认证信息 三种场景 如果
  • 第七课:MAC去中心化钱包开发之首页

    一 前言 在上一讲中 我们创建了钱包账户 备份了私钥 但是我们还是无法使用它 最基础的功能就是登录钱包 查看钱包资产 转账 查看转账记录等等 今天我们先把登录和首页搭建好 二 登录页面 用到的合约 验证账户密码合约 调用示例 不再粘贴所有代
  • idea 运行scala报错 Error compiling sbt component 'compiler-interface-2.13.1-52.0'

    idea 运行scala报错 Error compiling sbt component compiler interface 2 13 1 52 0 刚开始学习scala 在idea里创建普通的maven项目后 并且加了scala的插件等
  • react+UmiJS+Antd Pro简介

    这里写目录标题 一 项目初始化 二 基本了解 2 1 路由配置 2 2 Html模板 2 3 Mock数据 2 4 DvaJS 2 5 运行时配置 2 6 Umi UI 三 项目优化 3 1 配置项 3 1 1 config ts 3 1
  • NSJSONSerialization介绍

    ios5中apple增加了解析JSON的api NSJSONSerialization 网上已经有人做过测试 NSJSONSerialization在效率上完胜SBJSON TouchJSON YAJL JSONKit NextiveJso