大佬教程收集整理的这篇文章主要介绍了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; cJSON_AddStringToObject(root,"name","Jack (\"Bee\") Nimble"); 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); returnEXIT_succesS;
}
|
编译运行后(编译时注意要链接数学库,参数行要加-lm),运行结果如下:
@H_673_184@
1
2
3
4
5
6
7
8
|
以上是大佬教程为你收集整理的cJSON库源码分析全部内容,希望文章能够帮你解决cJSON库源码分析所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。