cJSON源码学习(一)


(一)准备工作

1.安装Cmake

在官网上下载"xx.tar.gz"源码安装包,输入以下命令。

在官网上下载了压缩包后,在ubuntu上依次运行下列命令就可以完成安装:


2.下载安装cJSON

cJSON官网下载:https://sourceforge.net/projects/cjson/

cJSON  GitHub:https://github.com/DaveGamble/cJSON

我是使用git clone直接从github上获取源码。之后通过cmake工具完成cJSON的安装。

(二)cJSON简介

JSON:JavaScript对象表示法(JavaScript Object Notation)。是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似C语音家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。JSON和XML的可读性可谓不相上下,JSON拥有更简易的语法,XML拥有更规范的标签形式。

cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有不到一千行,代码可读性也很好,作为项目学习是一个不错的选择。对于json格式编码与解码,其实就是类似于一个解释器,主要原理还是运用递归。

(三)cJSON源码分析

接下来我将从四个方面来逐步学习源码内容。


1.cJSON结构体

cJSON对象的数据结构如下:


不管是数值、字符串、数组还是对象类型都使用该结构体,类型信息通过标识符type来进行判断,cJSON总共定义了7种类型。

对于数组和对象类型,采用双向链表来实现,链表中的每个节点表示数组中的一个元素或者对象中的一个字段。其中child表示头节点,next、prev分别表示下一个节点和前一个节点。valuestring、valueint、valuedouble分别表示字符串、整数、浮点数的字面量。

所产生的结构形式如下例:


下一篇再把或许写完。

你可能感兴趣的:(cJSON源码学习(一))