当前位置: 首页 > news >正文

Json C语言嵌套遍历Json节点

Json
//程序用到了网上比较流行的Cjson开源库,可以在网上搜索下载,有两个文件(cjson.h和cjson.c),放到目录下即可

//
JsonTest.cpp : Defines the entry point for the console application. // XGZ.SZ.20251122 // Note:json嵌套遍历时需区分数据是否为一个节点下的 #include <stdio.h> #include "cJSON.h"void PrintjNode(cJSON *jNode) {int i;int size;cJSON * node = jNode;if(node == NULL) return;printf("%s:", node->string);switch(node->type){case cJSON_False:printf("False\n");break;case cJSON_True:printf("True\n");break;case cJSON_NULL:printf("NULL\n");break;case cJSON_Number:printf("%d\n", node->valueint);break;case cJSON_String:printf("%s\n", node->valuestring);break;case cJSON_Array:cJSON *nodeArray;size = cJSON_GetArraySize(node);printf("[");for(i = 0; i < size; i++){nodeArray = cJSON_GetArrayItem(node, i);if(nodeArray == NULL) continue;printf("%s,", nodeArray->valuestring);}printf("]\n");break;case cJSON_Object://sub node printf("Object{\n", node->valuestring); break;default:printf("unknown\n", node->valuestring);} }void FindjNode(cJSON *jNode) {cJSON * node = jNode;if(node == NULL) return;PrintjNode(node);cJSON* jNodeChild = node->child;FindjNode(jNodeChild);if(jNodeChild != NULL) printf("}\n"); //XGZ:区分子节点数据和兄弟节点数据 cJSON* jNodeNext = node->next;FindjNode(jNodeNext); } int main(int argc, char* argv[]) {char text1[]="{\n\"name\": \"Jack (\\\"Bee\\\") Nimble\", \n\"format\": {\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n}\n}"; //XGZ: 在原测试字符串中增加两个子节点char text2[]="{\n\"name\": \"Jack (\\\"Bee\\\") Nimble\", \n\\"format\": {\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n},\\n\"name\": \"Tom (\\\"Cow\\\") Nimble\", \n\\"format\": {\"type\": \"Nothing\"\n}\ }"; cJSON *root = cJSON_Parse(text1);printf("\n=========================\n");FindjNode(root);//XGZ: 找个文件测试long len;char *pdata;FILE *fp = fopen("r:\\agent_vmw7.json","rb"); //FILE *fp = fopen("r:\\test2.json","rb");fseek(fp,0,SEEK_END);len=ftell(fp);fseek(fp,0,SEEK_SET);pdata=new char[len+1];fread(pdata,1,len,fp);fclose(fp);root = cJSON_Parse(pdata);printf("\n=========================\n");FindjNode(root);delete pdata;return 0; }

程序运行的结果:

image

 

 

 

 

数据遍历,打印用{}区分子节点数据 
http://www.gsyq.cn/news/57012.html

相关文章:

  • Java企业级Function Calling落地:JBoltAI的架构设计与实践之道
  • 邢台市一对一家教机构推荐,2025最新教育机构权威测评榜单
  • 毕节市一对一家教机构推荐,2025最新教育机构权威测评榜单
  • 2025年新疆高三复读班权威推荐榜单:高三集训班/高三补习班/民办高中管理学校精选
  • 2025年KCA订做厂家权威推荐榜单:KCB/KX型/EX型源头厂家精选
  • 2025宜春市一对一辅导测评排行榜:这些机构值得推荐
  • 秦皇岛市一对一家教机构推荐,2025最新教育机构口碑实用排名
  • ImageViewer.js:一个零依赖的现代化图片预览组件
  • 唐山市一对一家教机构推荐,2025年最新教育机构权威测评排行榜
  • 2025年重庆横幅条幅制作公司权威推荐榜单:LED滚动屏广告制作/广告牌安装服务/气球拱门广告制作源头公司精选
  • 2025年平台钢格板定做厂家权威推荐榜单:电厂钢格板/镀锌钢格板/异形钢格板源头厂家精选
  • sqli-labs通关(持续更新)
  • 2025 最新天津短视频运营品牌实力排行榜:权威测评最新推荐,技术与服务双优企业精选天津宣传片制作/天津宣传片制作公司/天津宣传片拍摄/天津宣传片拍摄公司推荐
  • 2025年干挂石材厂家排行及选择指南
  • 2025年壁挂饮水机实力厂家权威推荐榜单:瞬间热饮机/热饮机/嵌入式管线机源头厂家精选
  • 2026清远一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!
  • 2026潮州一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!
  • 2026年云浮一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!
  • 2025年电子站牌厂家排名前十强:兰太城市科技实力登顶
  • 2025年公交站台定制厂家前十强排名与选购指南
  • 2025年11月香港副学士申请机构推荐榜:权威机构对比与选择指南
  • 商业智能BI 浅谈数据孤岛和数据分析的发展 - 教程
  • 2025年11月香港副学士申请机构排行榜:客观数据与真实口碑解析
  • 2025年江西聚合物粘接砂浆厂家权威推荐榜单:江西高强无收缩灌浆料/江西聚合物砌筑砂浆/江西聚合物抹面砂浆源头厂家精选
  • 汕尾一对一课外辅导机构实测榜:2026年汕尾家长必看!
  • 2025 教育培训平台综合测评榜:提分快靠谱推荐 + 真实口碑排名
  • 探秘仓颉:当函数式编程遇见面向对象王国,当协程风暴席卷并发荒原——从基础语法到实战测试联动的多维编程奇遇记 - 指南
  • 2025年11月高新企业申请公司推荐榜:五家知名服务机构对比与选择指南
  • 2025 年 11 月弹簧片厂家推荐排行榜,304弹簧片,301弹簧片,不锈铁,430不锈钢板材优质供应商精选
  • 2025年11月专利申请公司推荐列表:权威机构选择指南和市场分析