一个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相关推荐

  1. 解决Vue项目在iOS 10 报错 “Cannot declare a let variable twice: ‘r‘”

    问题描述 如下图所示,H5页面在iPhone7P及IPhone5c(iOS 10)手机上打开白屏,使用vconsole查看报错原因是Cannot declare a let variable twic ...

  2. 使用videojs,安卓可以正常播放视频,ios浏览器报错The media could not be loaded,either because the server or network ...

    写在开头 video标签在各个浏览器中表现各异,存在很多兼容性问题,所以我尝试使用了videojs这个框架 传送门:videojs起步 传送门:videojs文档 直入主题 问题:按照videojs文 ...

  3. iOS:Github上的开源项目集合

    转载地址:http://blog.csdn.NET/hbblzjy/article/details/52083919 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. ...

  4. flutter ios打包_关于Flutter iOS打包报错的问题

    今天升级Xcode之后,使用打包机打iOS包的时候,报了一个错,报错的信息如下: note: Using new build systemnote: Building targets in paral ...

  5. 记一次IOS打包报错

    公司有一个两年前的项目,用户突然发现一个简单的小BUG需要改,改的简单,但是在IOS打包的时候遇到不少问题. 首先,第一个问题,也是浪费了我最多时间去解决 百度和谷歌都搜索,得到的结果都一样,都是说缺 ...

  6. ng new ng-pro 报错(创建angular6项目报错)

    1.安装nodejs D:\develop\nodejs 2.配置node  npm环境变量,npm本地仓库指向自定义目录 原npm仓库位置C:\Users\Administrator\AppData ...

  7. VS报错:此项目需要缓解Spectre漏洞的库

    文章目录 报错起因 解决方法: 安装两个部分: 第一部分(SDK,库和框架) 第二部分(编译器,生成工具和运行时) 成功 报错起因 刚开始VS没安装WDK环境的时候没有这个报错,等我安装完WDK,然后 ...

  8. ios打包报错:User interaction is not allowed

    为什么80%的码农都做不了架构师?>>>    ##问题 ios命令行打包sign报错 User interaction is not allowed. Command /usr/b ...

  9. 【报错笔记】项目中使用ArrayList<>报错:‘<>’operator is not allowed for source level below 1.7

    项目中使用ArrayList<>报错:'<>'operator is not allowed for source level below 1.7 解决方案:右键项目–属性–J ...

最新文章

  1. linux arcgis10.4安装教程,ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装
  2. 含有js的英文单词_JavaScript 常用单词整理
  3. .NET、C#和ASP.NET三者之间的区别与联系
  4. Python中的sys模块
  5. CIO都在用的数据可视化软件
  6. [HAOI2011]problem a
  7. 书籍推荐:《LInux就该这么学》
  8. 在HTTPS安全页面中加载HTTP不安全的内容,如何绕过安全警告?
  9. 国二mysql综合应用题答案_2017年9月全国计算机二级MySQL考试章节练习题
  10. 倍加福二维码测试2——C#界面程序开发
  11. 计算机信息安全专业代码0839,全国网络空间安全学科专业分布
  12. 材料成型计算机基础,材料成型及控制工程 主干课程
  13. python实现微信机器人: AI智能回复
  14. Windows的cmd统计文件行数
  15. react-redux多reducer完整实例
  16. 关闭NV显卡的优化功能
  17. deepin回收站无法清空
  18. 对于VmWare WorkStation在桥接模式下与虚拟机互ping不通问题解决方案
  19. 高级去雾算法与原理--暗原色图技术
  20. canvas绘制笑脸

热门文章

  1. Python 的协程库 greenlet 和 gevent
  2. rocketmq 消息 自定义_跟我学RocketMQ[1-4]之消息消费及支持spring
  3. android sqlite 查询时间,android – sqlite日期查询
  4. linux安装pl sql,Linux上安装配置InstantClient及64位系统Pl/SQL配置
  5. mysql8解决区分大小写问题_球磨机“包球”和“饱磨”分不清?点进来快速区分,解决问题...
  6. STM32F412应用开发笔记之二:基本GPIO控制
  7. springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...
  8. 现代软件工程 作业 结对编程 模板
  9. android icon 圆角半径,iOS和安卓APP启动图标的尺寸和圆角值详解
  10. python turtle绘制柱状图_python绘制图形(Turtle模块)