json_parse_it :开始解析,字符串指针从头到尾循环

jk_parse_next_token:获取下个字符的type和length
  大部分分隔符长度都是固定1
  jk_parse_string:循环移动指针直到结束符号,获取字符串长度
  jk_parse_number:获取数字的长度

jk_object_for_token:获取这个节点(type,长度)
  判断type
    jk_cachedObjects:获取string对象
    jk_cachedObjects:获取number对象
    jk_parse_dictionary:获取字典对象
    jk_parse_array:获取数组对象
    kCFBooleanTrue
    kCFBooleanFalse
    kCFNull

jk_parse_dictionary:解析字典
  循环
    jk_parse_next_token,jk_object_for_token,:获取key
    jk_parse_next_token,判断:符号不然报错
    jk_parse_next_token,jk_object_for_token,:获取value

jk_parse_array 解析数组
  循环
    jk_parse_next_token,jk_object_for_token,:获取对象

总得来说就是:

json_parse_it 是入口,
jk_object_for_token 作为状态机角色,处理每一个对象,
jk_parse_next_token 获取状态机的下一个切换,接下来怎么处理下一个对象,

文/笔寂晓才(简书作者)

原文链接:http://www.jianshu.com/p/dc7f581ee8fa

iOS开发那些事儿(三)JsonKit解析原理的更多相关文章

  1. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  2. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  3. IOS开发之路三(XML解析之KissXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  4. IOS开发之路三(XML解析之GDataXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  5. iOS开发那些事儿(二)热补丁

    一.热补丁作用:修复导致崩溃的错误.替换/增加方法.替换原来的界面等等 二.实现手段:JSPatch (使用Objective-C Objective-C和JavaScript jspatch桥.你可 ...

  6. iOS开发那些事儿(六)Git分之策略

    git 分支策略 将要介绍的这个模型不会比任何一套流程内容多,每个团队成员都必须遵守,这样便于管理软件开发过程. 既分散又集中 我们使用的,且与这个分支模型配合的非常好的库,他有一个“真正”的中央仓库 ...

  7. iOS开发常用第三库

    字典转模型 1.(MJExtension) https://github.com/CoderMJLee/MJExtension 2.(YYModel) https://github.com/ibire ...

  8. iOS开发教程:Storyboard全解析-第一部分

    本文转载至http://blog.csdn.net/chang6520/article/details/7945845 感谢原文作者分享     故事版(Storyboard)是一个能够节省你很多设计 ...

  9. ios开发runtime学习三:动态添加方法(实际应用少,面试)

    #import "ViewController.h" #import "Person.h" /* 1: Runtime(动态添加方法):OC都是懒加载机制,只要 ...

随机推荐

  1. centos上node.js的安装

    CentOS 下安装 Node.js 1.下载源码,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,本文以v0.10.24为例: cd /usr/lo ...

  2. JQ each

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. JQ动画 show hide

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. div背景等比例缩小

    background: url("http://www.asdear.com/Content/loginPage/newimages/nchina.png") 50% 0px no ...

  5. SQL使用记录

    Q:怎么删掉sql server登录时的用户名?(仅仅是删掉那个登录时的提示) A:先关闭数据库登录引擎,然后删除:%AppData%\Microsoft\Microsoft SQL Server\1 ...

  6. HDU-1049

    Description An inch worm is at the bottom of a well n inches deep. It has enough energy to climb u i ...

  7. javascript中base64和Gzip的使用

    一般的使用流程(4步): 服务器端将字符串Gzip压缩为 字节数组——>通过base64转为字符串(后传递到客户端)——>解码base64字符串为字节数组——>Gzip解码字节数组为 ...

  8. mysql单表大小的限制

    mysql单表大小的限制一.MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定(限制扩大到64pb),而是由所在主机的OS上面的文件系统来决定了.在mysql5. ...

  9. Problem 1008 Hay Points

    Problem Description Each employee of a bureaucracy has a job description - a few paragraphs that des ...

  10. SQL Server 中可以被锁住的 12 种资源

    第1种: DB 整个数据库 第2种: file 数据库文件 第3种: table 第4种: hobt(堆)BTree(B树) 第5种: extent 一个区(8个8KB页面) 第6种: page 数据 ...