cJSON各函数实现的功能
参考资料:
http://blog.csdn.net/daisy09/article/details/7086746
cJSON简介:
JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。
cJSON结构体:
typedefstruct cJSON {
structcJSON *next,*prev;
struct cJSON *child;
int type;
char * valuestring;
int valueint;
double valuedouble;
char *string;
}cJSON;
1、cJSON存储的时候是采用链表存储的,其访问方式很像一颗树。每一个节点可以有兄妹节点,通过next/prev指针来查找,它类似双向链表;每个节点也可以有孩子节点,通过child指针来访问,进入下一层。
不过,只有节点是对象或数组才可以有孩子节点。
2、type一共有7种取值,分别是:
#define cJSON_False 0
#define cJSON_True 1
#define cJSON_NULL 2
#define cJSON_Number 3
#define cJSON_String 4
#define cJSON_Array 5
#define cJSON_Object 6
若是Number类型,则valueint或valuedouble中存储着值,若你期望的是int,则访问valueint,若期望的是double,则访问valuedouble,可以得到值。
若是String类型的,则valuestring中存储着值,可以访问valuestring得到值。
3、string中存放的是这个节点的名字
二、用法举例
比如你有一个json数据
Javascript代码
{
"name": "Jack (\"Bee\") Nimble",
"format": {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
}
{
"name": "Jack (\"Bee\") Nimble",
"format": {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
}
那么你可以
1.cJSON_Parse:将json数据解析成json结构体
cJSON *root = cJSON_Parse(my_json_string);
2.cJSON_GetObjectItem:获取某个元素
cJSON *format = cJSON_GetObjectItem(root,"format");
int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;
3.cJSON_Print:将就SON结构体转化成字符串
char *rendered=cJSON_Print(root);
4.cJSON_Delete:删除一个json结构体
cJSON_Delete(root);
5:构建一个json结构体
cJSON *root,*fmt;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"type", "rect");
cJSON_AddNumberToObject(fmt,"width", 1920);
cJSON_AddNumberToObject(fmt,"height", 1080);
cJSON_AddFalseToObject (fmt,"interlace");
cJSON_AddNumberToObject(fmt,"frame rate", 24);
cJSON各函数实现的功能相关推荐
- 让你的javascript函数拥有记忆功能,降低全局变量的使用
考虑例如以下场景:假如我们须要在界面上画一个圆,初始的时候界面是空白的.当鼠标移动的时候,圆须要尾随鼠标移动.鼠标的当前位置就是圆心.我们的实现方案是:假设界面上还没有画圆,那么就新创建一个:假设已经 ...
- 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...
程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...
- 【学习笔记】18、函数的其他功能
函数的其他功能 一.调用函数时参数的顺序 1.位置参数和关键字参数 注意,混合使用的时候,位置参数不能在关键字参数的后面,否则会报错. 定义时,小括号中的参数,用来接收参数用的,称之为"形参 ...
- C语言输出长方柱的体积,需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能...
需要求3个长方柱的体积,请编写一个基于对象的程序.数据成员包括length(长).width(宽). height(高).要求用成员函数实现以下功能: (1) 由键盘分别输入3个长方柱的长.宽.高: ...
- python中count的作用_python中函数COUNT()的功能是什么
python中函数COUNT()的功能是统计字符串里某个字符出现的次数,语法为[str.count("char", start,end)],其中str为要统计的字符,star为索引 ...
- c语言中把各位上为奇数的数取出,下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。 - 赏学吧...
下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲.高位仍在高位,低位仍在低位.例如当s中的数为87653142时,t中的数为7531. 请改正函数fun ...
- C语言将字符串s连接到t的后面,下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t..._考试资料网...
问答题下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t中,然后把s中的字符按逆序连接到字符串t的后面. 例如,当s中的字符串为"ABCDE"时,则t中的 ...
- c语言中用递归求平方根,下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下: 例如 - 赏学吧...
下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根.求平方根的迭代公式如下: 例如,2的平方根为1.414214. 请改正程序中的错误,使它能得出正确的结果. 注意:不要改动main ...
- C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入
例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...
最新文章
- beautifulsoup以及正则表达式re之间的一些知识!
- AngularJs 基础教程​ —— Select(选择框)
- 100. Same Tree
- 秘籍分享:SLB实例克隆
- hadoop Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
- HTTP劫持 方面了解和学习
- 时间序列分析工具箱——tibbletime
- 拓端tecdat|用SAS进行泊松,零膨胀泊松和有限混合Poisson模型分析
- 如何清空Python的List
- mysql高级学文章来源: [学习通](http://www.bdgxy.com/)http://www.bdgxy.com/<p>[普学网](http:/mysql高级习之索引的优劣势及规则使用
- Linux镜像模式,Linux实现HiTool的合并镜像功能
- 支持小游戏开发的“引擎四剑客”
- 计算机四级大一能考吗,大一新生不让报考四六级?凭什么啊!!!
- c语言中math的作用,C语言常用的math函数
- golang并发模式work
- 优秀网页设计:20个国外大学网站设计欣赏
- 【SDOI2010】【BZOJ1924】所驼门王的宝藏
- PHP:40+开发工具推荐
- 腾讯音乐回港上市,抖音取代网易云,成为腾讯音乐终极对手?
- Cocos2dx3.10常侍之移驾UBUNTU
热门文章
- sklearn K折(KFold)交叉验证案例,展开细节代码与cross_validate简写
- python按照区间长度给定不同数量的随机数
- 更新jupyter lab
- python判断某一天是周几
- 日志显示TypeError: Failed to fetch报错与TypeError: NetworkError when attempting to fetch resource报错
- python pandas 判断是否为空“nan”
- 二级mysql教程下载_全国计算机等级考试教程:二级MySQL数据库程序设计
- mongoose 批量修改字段_常用SQL系列之(五):多表和禁止插入、批量与特殊更新等...
- 计算机二级考试c语言冲刺,计算机二级C语言考试冲刺练习题
- NOIP2011 D1 T2选择客栈