cJSON字符串解析
源字符串
{
"menu": {
"header": "SVG Viewer",
"items": [{
"id": "Open"
}, {
"id": "OpenNew",
"label": "Open New"
}, null, {
"id": "ZoomIn",
"label": "Zoom In"
}, {
"id": "ZoomOut",
"label": "Zoom Out"
}, {
"id": "OriginalView",
"label": "Original View"
}, null, {
"id": "Quality"
}, {
"id": "Pause"
}, {
"id": "Mute"
}, null, {
"id": "Find",
"label": "Find..."
}, {
"id": "FindAgain",
"label": "Find Again"
}, {
"id": "Copy"
}, {
"id": "CopyAgain",
"label": "Copy Again"
}, {
"id": "CopySVG",
"label": "Copy SVG"
}, {
"id": "ViewSVG",
"label": "View SVG"
}, {
"id": "ViewSource",
"label": "View Source"
}, {
"id": "SaveAs",
"label": "Save As"
}, null, {
"id": "Help"
}, {
"id": "About",
"label": "About Adobe CVG Viewer..."
}]
}
}
//先构建cJSON对象CJSON *root=CJSON_CreateObject();CJSON *menu=CJSON_AddObjectToObject(root,"menu");CJSON_AddStringToObject(menu,"header","SVG Viewer");CJSON *items=CJSON_AddArrayToObject(menu,"items");CJSON *element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Open");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","OpenNew");CJSON_AddStringToObject(element,"label","Open New");CJSON_AddItemToArray(items,element);element=CJSON_CreateNull();CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","ZoomIn");CJSON_AddStringToObject(element,"label","Zoom In");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","ZoomOut");CJSON_AddStringToObject(element,"label","Zoom Out");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","OriginalView");CJSON_AddStringToObject(element,"label","Original View");CJSON_AddItemToArray(items,element);element=CJSON_CreateNull();CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Quality");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Pause");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Mute");CJSON_AddItemToArray(items,element);element=CJSON_CreateNull();CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Find");CJSON_AddStringToObject(element,"label","Find...");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","FindAgain");CJSON_AddStringToObject(element,"label","Find Again");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Copy");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","CopyAgain");CJSON_AddStringToObject(element,"label","Copy Again");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","CopySVG");CJSON_AddStringToObject(element,"label","Copy SVG");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","ViewSVG");CJSON_AddStringToObject(element,"label","View SVG");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","ViewSource");CJSON_AddStringToObject(element,"label","View Source");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","SaveAs");CJSON_AddStringToObject(element,"label","Save As");CJSON_AddItemToArray(items,element);element=CJSON_CreateNull();CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","Help");CJSON_AddItemToArray(items,element);element=CJSON_CreateObject();CJSON_AddStringToObject(element,"id","About");CJSON_AddStringToObject(element,"label","About Adobe CVG Viewer...");CJSON_AddItemToArray(items,element);char *cjson_string=CJSON_Print(root);CJSON *source=CJSON_Parse(cjson_string);printf("%s\n",CJSON_Print(source));CJSON_Delete(source);
// FILE *fp=fopen("test.json","w+");
// fprintf(fp,"%s",CJSON_Print(source));
// fclose(fp);//解析//提取二级目录下的header信息CJSON *tmp=CJSON_GetObjectItemCaseSensitive(menu,"header");if(CJSON_IsString(tmp))printf("%s\n",tmp->valuestring);//提取数组项,并遍历输出,id label信息tmp=CJSON_GetObjectItemCaseSensitive(menu,"items");CJSON *child=NULL;if(tmp){printf("%s \n",tmp->string);child=tmp->child;}while(child){printf("-------\n");if(CJSON_IsNull(child))printf("NULL!\n");else{tmp=child->child;while(tmp){if(CJSON_IsString(tmp)){printf("%s :%s \n",tmp->string,tmp->valuestring);}else{printf("false fomat!");}tmp=tmp->next;}}child=child->next;}
控制台输出:
{
"menu": {
"header": "SVG Viewer",
"items": [{
"id": "Open"
}, {
"id": "OpenNew",
"label": "Open New"
}, null, {
"id": "ZoomIn",
"label": "Zoom In"
}, {
"id": "ZoomOut",
"label": "Zoom Out"
}, {
"id": "OriginalView",
"label": "Original View"
}, null, {
"id": "Quality"
}, {
"id": "Pause"
}, {
"id": "Mute"
}, null, {
"id": "Find",
"label": "Find..."
}, {
"id": "FindAgain",
"label": "Find Again"
}, {
"id": "Copy"
}, {
"id": "CopyAgain",
"label": "Copy Again"
}, {
"id": "CopySVG",
"label": "Copy SVG"
}, {
"id": "ViewSVG",
"label": "View SVG"
}, {
"id": "ViewSource",
"label": "View Source"
}, {
"id": "SaveAs",
"label": "Save As"
}, null, {
"id": "Help"
}, {
"id": "About",
"label": "About Adobe CVG Viewer..."
}]
}
}
SVG Viewer
items
-------
id :Open
-------
id :OpenNew
label :Open New
-------
NULL!
-------
id :ZoomIn
label :Zoom In
-------
id :ZoomOut
label :Zoom Out
-------
id :OriginalView
label :Original View
-------
NULL!
-------
id :Quality
-------
id :Pause
-------
id :Mute
-------
NULL!
-------
id :Find
label :Find...
-------
id :FindAgain
label :Find Again
-------
id :Copy
-------
id :CopyAgain
label :Copy Again
-------
id :CopySVG
label :Copy SVG
-------
id :ViewSVG
label :View SVG
-------
id :ViewSource
label :View Source
-------
id :SaveAs
label :Save As
-------
NULL!
-------
id :Help
-------
id :About
label :About Adobe CVG Viewer...
cJSON字符串解析相关推荐
- 实现迷你解析器把字符串解析成NestInteger类 Mini Parser
为什么80%的码农都做不了架构师?>>> 问题: Given a nested list of integers represented as a string, implem ...
- java 字符串解析
StringTokenizer tokenizer = new StringTokenizer(number, ","); boolean bool = true; ...
- 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- as3转换为html5,AS3和HTML5 - 使用正则表达式将字符串解析为数组
我一直在寻找和使用RegEx一段时间,并试图找到我可以应用于AS3和HTML5的解决方案.AS3和HTML5 - 使用正则表达式将字符串解析为数组 我有一个自定义用户输入部分,256个字符,他们可以自 ...
- 关于json格式字符串解析并用mybatis存入数据库
园子里面找了很多关于json解析后存入数据库的方法,不是太乱,就是没有写完,我下面的主题代码多是受下面两位的启发,请按顺序查看 http://www.cnblogs.com/tian830937/p/ ...
- xml html 转化为字符串,XSLT:将字符串解析为XML节点集(concret:将HTML-String转换为节点集)?...
我面临的问题是我在XML中有一个字符串的节点,代表HTML. 我需要削减该字符串,但是,当然,这可能导致在invalide HTML的标记(例如,如果我切字符串总是后30个字符我很容易失去闭元件等等) ...
- json解析和字符串解析_高效创建和解析定界字符串
json解析和字符串解析 描述 (Description) Converting a delimited string into a dataset or transforming it into u ...
- 解析php变量,php使用parse_str实现查询字符串解析到变量中的方法
本文实例讲述了php使用parse_str实现查询字符串解析到变量中的方法.分享给大家供大家参考,具体如下: parse_str()函数可实现把字符串解析到变量中,这意味着实现了字符串与变量之间的一种 ...
- Oracle的字符串转换成二进制,将二进制字符串解析为文本/字符
我可能忽略了一些愚蠢的东西,但我从来没有必要在代码中处理二进制文件,并认为在加密程序中练习它是个好主意, .长话短说,我能够将字符串转换为二进制(以字符串的形式),但无法弄清楚如何做相反的操作.将二进 ...
- 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类
下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...
最新文章
- 获取网页源代码的最简单办法
- 自定义取值距离的javascript random()函数
- JVM指令:invokeSpecial/invokeVirtual/invokeStatic/invokeInterface/invokeDynamic方法调用指令
- android -------- MVP+DataBinding 的使用
- 51nod 1847 奇怪的数学题(数论/min25筛/杜教筛/斯特林数)
- antd react dva在model中使用另一个model的state值
- 大型分布式C++框架《三:序列化与反序列化》
- 【ACL2020】DeeBERT:衡量性能与效率的 BERT 推理方法
- 北京调频(FM)无线广播发射频率/频道表 (转载)
- linux进程关系图谱
- 初中数学抽象教学的案例_初中数学教学案例与反思
- 参加科学教师与计算机培训总结,小学科学教师培训总结
- QT设置应用程序图标设置
- 管中窥豹,深入总部调研苏宁易购研发
- 【ES6】阮一峰promise
- ISO认证证书上常见的认可标志
- 牛客网习题集 - Wannafly挑战赛13- D applese生日
- 【持续更新】java多线程面试题整理
- web应用测试的具体流程(等保测评相关)
- Android画图drawText入门(一)-字体结构