美文网首页
cJSON源码学习(一)

cJSON源码学习(一)

作者: 月月与 | 来源:发表于2020-05-20 21:59 被阅读0次

(一)准备工作

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源码学习(一)

    (一)准备工作 1.安装Cmake 在官网上下载"xx.tar.gz"源码安装包,输入以下命令。 在官网上下载了压...

  • cJSON源码阅读(一)

    源码获取 git clone https://github.com/DaveGamble/cJSON.git cJ...

  • cjson 源码分析

    cjson 的源码大约1000行左右,用C语言实现了一个json的解析器。c语言没有字典或key-value这样的...

  • cJSON源码分析

    cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有不到一千行,代码的可读性也很好,很适合作为C语言...

  • cJSON库使用

    cJSON安装 在Linux下,使用下面命令下载源码git clone https://github.com/D...

  • cJSON使用(一)

    目录 cJSON使用(一)cJSON使用(二) cJSON介绍 cJSON是一个超轻巧,携带方便,单文件,简单的可...

  • cJSON源码阅读笔记

    前言 点击这里可以看到cJSON的介绍和使用(这是我之前的一篇博客)今天将cJOSN的源码阅读了一遍,下面是在阅读...

  • cJSON源码阅读(三)

    JSON序列化函数cJSON_Print

  • cJSON源码阅读(二)

    JSON字符串解析函数cJSON_Parse() 真正的解析函数parse_value 字符串类型解析函数 解析数...

  • 解决方法:STM32使用cJSON解析数据失败

    一、问题 在 STM32 移植 cJSON 库后,使用 cJSON_Parse(),解析失败。 使用 cJSON_...

网友评论

      本文标题:cJSON源码学习(一)

      本文链接:https://www.haomeiwen.com/subject/efyaohtx.html