一个Json解析库,其特点是代码简单,只有一个.h和.m文件。

https://github.com/johnezang/JSONKit

JSON(JavaScript Object Notation)是一个轻量级的,基于文本的,序列结构化数据格式. 由RFC 4627定义.提供以下主要类型:

null
Boolean true and false
Number
String
Array
Object (a.k.a. Associative Arrays, Key / Value Hash Tables, Maps, Dictionaries, etc.)

对应的Objective—C的类:

JSON Objective-C
null NSNull
true and false NSNumber
Number NSNumber
String NSString
Array NSArray
Object NSDictionary

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=;i<arr.count;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的更多相关文章

  1. GitHub 上值得关注的 iOS 开源项目

    GitHub 上值得关注的 iOS 开源项目 原文链接:http://www.jianshu.com/p/e5dfe1a09611 GitHub 上值得关注的 iOS 开源项目 —— 由 红旗下的蛋  ...

  2. iOS开源项目周报0105

    由OpenDigg 出品的iOS开源项目周报第四期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. He ...

  3. iOS开源项目周报1229

    由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Ma ...

  4. iOS开源项目周报1222

    由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. io ...

  5. iOS开源项目周报1215

    由OpenDigg 出品的iOS开源项目周报第一期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. PY ...

  6. 直接拿来用!最火的iOS开源项目

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  7. (转)直接拿来用!最火的iOS开源项目(二)

    “每一次的改变总意味着新的开始.”这句话用在iOS上可谓是再合适不过的了.GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7, ...

  8. (转)直接拿来用!最火的iOS开源项目(一)

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  9. 40个GitHub上最受欢迎的iOS开源项目

    40个GitHub上最受欢迎的iOS开源项目(一) http://www.weste.net/2013/8-1/92975.html 40个GitHub上最受欢迎的iOS开源项目(二) http:// ...

  10. 【转】GitHub平台最火的iOS开源项目——2013-08-25 17

    http://www.cnblogs.com/lhming/category/391396.html 今天,我们将介绍20个在GitHub上非常受开发者欢迎的iOS开源项目,你准备好了吗? 1. AF ...

随机推荐

  1. Python--re模块的findall等用法

    1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...

  2. 邂逅Sass和Compass之Compass篇

    本文主要讲解Compass的内容,众所周知Compass是Sass的工具库,如果对Sass不甚了解的同学可以移步 邂逅Sass和Compass之Sass篇 Sass本身只是一个“CSS预处理器”,Co ...

  3. Python全栈开发之3、数据类型set补充、深浅拷贝与函数

    转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5466082.html 一.基本数据类型补充 set是一个无序而且不重复的集合,有些类似于数学中的集合,也可以求交集, ...

  4. 使用Unity解耦你的系统—PART3——依赖注入

    继续学习Unity,在前几篇中已经将Unity的使用方法做了一个还算详细的介绍了,主要是如何通过代码及配置文件来注册对象之间的关系.Unity内置所有的生命周期管理使用介绍,及Unity的Regist ...

  5. 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)I - 没有名字

    题目描述 tabris实在是太菜了,没打败恶龙,在绿岛也只捡到一块生铁回去了,为了不在继续拉低acimo星球的平均水平逃离地球,来到了Sabi星球. 在这里tabris发现了一种神奇的生物,这种生物不 ...

  6. Python并发编程-守护进程

    守护进程 子进程转换为守护进程 主进程的代码结束,子进程的代码也应该接收, 这个事情有守护进程来做 守护进程会随着主进程的代码执行完毕而结束, 而不是随着主进程的接收而结束(子进程不一定结束) fro ...

  7. SSMdemo:租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...

  8. 创建基于主-从视图的应用程序(Master-Detail Application)

    以Master-Detail Application创建的应用程序在iPad和iPhone上都能运行,虽然模板解决了大部分问题,但还是有一些Apple遗留问题需要解决.使用该模板创建项目时,需要将下拉 ...

  9. python邮件

    解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...

  10. 阿里云提示Discuz memcache+ssrf GETSHELL漏洞如何解决

    一般这个漏洞都是下面文件,source/function/function_core.php 搜索下面代码: $content = preg_replace($_G['setting']['outpu ...