Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cJSON库源码分析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的Json格式解析库。

那什么是Json格式?这里照搬度娘百科的说法:

Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成

更加详细的解释和示例请查看http://www.json.org/主页。

其实简单说,Json就是一种信息交换格式,而cJSON其实就是对Json格式的字符串进行构建和解析的一个C语言函数库。

可以在以下地址下载到cJSON的源代码

http://sourceforge.net/projects/cjson/

__MACOSX目录是提供给Mac OS的源码,我的机器运行的是Fedora 18,所以选择另外一个目录即可。

简单的阅读下README文件,先学习cJSON库的使用方法。若是连库都还不会使用,分析源码就无从谈起了。通过简单的了解,我们得知cJSON库实际上只有cJSON.c和cJSON.h两个文件组成,绝对轻量级。

不过,代码风格貌似有点非主流,先用indent格式化一下代码吧。我个人喜欢K&R风格的代码,使用的indent命令行参数如下:

1

indent-bad-bli0-ce-kr-nsob--space-after-if--space-after-while--space-after-for--use-tabs-i8

格式化之后,代码结构看起来清晰多了。

那么,从何处下手来分析呢?打开代码文件逐行阅读么?当然不是了,有main函数的程序大都是从main函数开始分析,那么没有main函数的纯函数库呢?那就自己写main函数呗。

cJSON作为Json格式的解析库,其主要功能无非就是构建和解析Json格式了,我们先写一个构建Json格式字符串的程序,尽可能的使其用到的类型多一点(事实上README文件里提供了不错的示例代码,我们直接借鉴一下吧)。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#include <stdio.h>

#include <stdlib.h>

#include "cJSON.h"

intmain(intargc,char*argv[])

{

cJSON*root,*fmt;

root=cJSON_CreateObject();

cJSON_AddStringToObject(root,"name","Jack (\"Bee\") Nimble");

fmt=cJSON_CreateObject();

cJSON_AddItemToObject(root,"format",fmt);

cJSON_AddStringToObject(fmt,"type","rect");

cJSON_AddnumberToObject(fmt,"width",1920);

cJSON_AddfalseToObject(fmt,"interlace");

char*result=cJSON_Print(root);

puts(result);

free(result);

cJSON_delete(root);

returnEXIT_succesS;

}

编译运行后(编译时注意要链接数学库,参数行要加-lm),运行结果如下:

@H_673_184@ 1
2
3
4
5
6
7
8
{

"name":"Jack (\"Bee\") Nimble",

"format":{

"type":"rect",

"width":1920,

"interlace":false

}
}

大佬总结

以上是大佬教程为你收集整理的cJSON库源码分析全部内容,希望文章能够帮你解决cJSON库源码分析所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。