ios jsonkit 报错_iOS开源项目:JSONKit
一个Json解析库,其特点是代码简单,只有一个.h和.m文件。
https://github.com/johnezang/JSONKit
JSON(JavaScript Object Notation)是一个轻量级的,基于文本的,序列结构化数据格式. 由RFC 4627定义.提供以下主要类型:
nullBooleantrue and falseNumber
String
Array
Object (a.k.a. Associative Arrays, Key/ Value Hash Tables, Maps, Dictionaries, etc.)
对应的Objective—C的类:
JSONObjective-C
true and false
1、使用:
NSString *jsonstring =@"[{\"age\":18,\"book\":{\"price\":23.2,\"title\":\"boook111\"},\"name\":\"samyou\"},{\"age\":22,\"book\":{\"price\":33,\"title\":\"booook222\"},\"name\":\"samsam\"}]";
NSData*data=[jsonstring dataUsingEncoding:NSUTF8StringEncoding];
NSArray*arr=(NSArray *)[data mutableObjectFromJSONData];
NSLog(@"count=%d",arr.count);for(int i=0;i
{
NSDictionary*people=[arr objectAtIndex:i];
NSString*name=[people objectForKey:@"name"];
NSString*age=[people objectForKey:@"age"];
NSLog(@"person withname=%@,age=%d",name,[age intValue]);
NSDictionary*book=[people objectForKey:@"book"];
NSString*bookname=[book objectForKey:@"title"];
NSNumber*price=[book objectForKey:@"price"];
NSLog(@"book with title=%@,price=%f",bookname,[price doubleValue]);
}
使用上很简单,利用字典键值对获取就行,参考http://stephen830.iteye.com/blog/1718550。
2、原理:
JSONKit的源码只有个两个文件,先看看解析JSON的流程。
NSArray *arr=(NSArray *)[data mutableObjectFromJSONData];
这个方法是NSData的Category,里面调用了
JSONDecoder的解析方法:
[JSONDecoder decoderWithParseOptions:parseOptionFlags]) mutableObjectWithData:self error:error];
总的来说,JSONKit对
NSArray
NSString
NSData
NSDictionary
都进行了序列化和反序列化的扩展,可以把这些对象与JSON对象之间相互转换。
由于JSONKit没有使用ARC,所以使用时不要忘了在build phases -》compile sources 选择文件后面加-fno-objc-arc参数。
ios jsonkit 报错_iOS开源项目:JSONKit相关推荐
- 解决Vue项目在iOS 10 报错 “Cannot declare a let variable twice: ‘r‘”
问题描述 如下图所示,H5页面在iPhone7P及IPhone5c(iOS 10)手机上打开白屏,使用vconsole查看报错原因是Cannot declare a let variable twic ...
- 使用videojs,安卓可以正常播放视频,ios浏览器报错The media could not be loaded,either because the server or network ...
写在开头 video标签在各个浏览器中表现各异,存在很多兼容性问题,所以我尝试使用了videojs这个框架 传送门:videojs起步 传送门:videojs文档 直入主题 问题:按照videojs文 ...
- iOS:Github上的开源项目集合
转载地址:http://blog.csdn.NET/hbblzjy/article/details/52083919 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. ...
- flutter ios打包_关于Flutter iOS打包报错的问题
今天升级Xcode之后,使用打包机打iOS包的时候,报了一个错,报错的信息如下: note: Using new build systemnote: Building targets in paral ...
- 记一次IOS打包报错
公司有一个两年前的项目,用户突然发现一个简单的小BUG需要改,改的简单,但是在IOS打包的时候遇到不少问题. 首先,第一个问题,也是浪费了我最多时间去解决 百度和谷歌都搜索,得到的结果都一样,都是说缺 ...
- ng new ng-pro 报错(创建angular6项目报错)
1.安装nodejs D:\develop\nodejs 2.配置node npm环境变量,npm本地仓库指向自定义目录 原npm仓库位置C:\Users\Administrator\AppData ...
- VS报错:此项目需要缓解Spectre漏洞的库
文章目录 报错起因 解决方法: 安装两个部分: 第一部分(SDK,库和框架) 第二部分(编译器,生成工具和运行时) 成功 报错起因 刚开始VS没安装WDK环境的时候没有这个报错,等我安装完WDK,然后 ...
- ios打包报错:User interaction is not allowed
为什么80%的码农都做不了架构师?>>> ##问题 ios命令行打包sign报错 User interaction is not allowed. Command /usr/b ...
- 【报错笔记】项目中使用ArrayList<>报错:‘<>’operator is not allowed for source level below 1.7
项目中使用ArrayList<>报错:'<>'operator is not allowed for source level below 1.7 解决方案:右键项目–属性–J ...
最新文章
- linux arcgis10.4安装教程,ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
- 含有js的英文单词_JavaScript 常用单词整理
- .NET、C#和ASP.NET三者之间的区别与联系
- Python中的sys模块
- CIO都在用的数据可视化软件
- [HAOI2011]problem a
- 书籍推荐:《LInux就该这么学》
- 在HTTPS安全页面中加载HTTP不安全的内容,如何绕过安全警告?
- 国二mysql综合应用题答案_2017年9月全国计算机二级MySQL考试章节练习题
- 倍加福二维码测试2——C#界面程序开发
- 计算机信息安全专业代码0839,全国网络空间安全学科专业分布
- 材料成型计算机基础,材料成型及控制工程 主干课程
- python实现微信机器人: AI智能回复
- Windows的cmd统计文件行数
- react-redux多reducer完整实例
- 关闭NV显卡的优化功能
- deepin回收站无法清空
- 对于VmWare WorkStation在桥接模式下与虚拟机互ping不通问题解决方案
- 高级去雾算法与原理--暗原色图技术
- canvas绘制笑脸
热门文章
- Python 的协程库 greenlet 和 gevent
- rocketmq 消息 自定义_跟我学RocketMQ[1-4]之消息消费及支持spring
- android sqlite 查询时间,android – sqlite日期查询
- linux安装pl sql,Linux上安装配置InstantClient及64位系统Pl/SQL配置
- mysql8解决区分大小写问题_球磨机“包球”和“饱磨”分不清?点进来快速区分,解决问题...
- STM32F412应用开发笔记之二:基本GPIO控制
- springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...
- 现代软件工程 作业 结对编程 模板
- android icon 圆角半径,iOS和安卓APP启动图标的尺寸和圆角值详解
- python turtle绘制柱状图_python绘制图形(Turtle模块)