当前位置: 首页 > 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.jsqmd.com/news/47281/

相关文章:

  • Java企业级Function Calling落地:JBoltAI的架构设计与实践之道
  • AI知识库检索的精度与召回平衡之道:JBoltAI的技术实践
  • AI原生应用:Java架构师的下一站,不是打补丁,是范式革新
  • 邢台市一对一家教机构推荐,2025最新教育机构权威测评榜单
  • AI开发别再“大材小用”:JBoltAI的分流策略让效率与成本双向最优
  • 毕节市一对一家教机构推荐,2025最新教育机构权威测评榜单
  • 1v1视频源码,js实现滚动到某个位置动画 - 云豹科技
  • 2025年新疆高三复读班权威推荐榜单:高三集训班/高三补习班/民办高中管理学校精选
  • 2025年KCA订做厂家权威推荐榜单:KCB/KX型/EX型源头厂家精选
  • 【程序员日志】想再试试,再追一下梦想
  • 2025宜春市一对一辅导测评排行榜:这些机构值得推荐
  • 六盘水一对一家教机构推荐,2025最新辅导机构靠谱测评排行榜
  • 泰州一对一课外辅导机构实力推荐,2026最新靠谱培训机构排行榜揭晓!
  • 【完整源码+信息集+部署教程】【天线&空中农业】农业病害检测系统源码&数据集全套:改进yolo11-SPPF-LSKA
  • 2025-11-22 摄影学习1
  • 秦皇岛市一对一家教机构推荐,2025最新教育机构口碑实用排名
  • 贵阳一对一家教机构推荐,2025最新辅导机构权威测评榜单
  • 遵义市一对一家教机构推荐,2025最新培训机构测评排行榜
  • 2025年杭州离婚律师权威推荐榜单:涉外离婚/离婚纠纷/离婚财产纠纷专业律师团队精选
  • 2025.11 NOIP 前做题记录(未完成)
  • 镇江一对一家教机构推荐,2026最新课外机构终极评测
  • 唐山市一对一家教机构推荐,2025年最新教育机构权威测评排行榜
  • 计算机毕设java基于智慧物流的疫情防控人员物质管理系统设计与实现 Java 开发的疫情防控物资与健康管理系统设计与实现 基于 SSM 框架的多角色疫情防控物资配送管理平台设计 - 详解
  • 2025 年 11 月冷库板/聚氨酯冷库板/机制板, 冷库门, 冷库工程/冷库集成厂家推荐排行榜:专业实力与客户满意度全景解析及选购指南
  • NCHU_单部电梯调度程序
  • 2025年重庆横幅条幅制作公司权威推荐榜单:LED滚动屏广告制作/广告牌安装服务/气球拱门广告制作源头公司精选
  • Redis 内部编码/单线程模型/string - 实践
  • 自律和不自律之间,差的是一整个人生
  • 2025年增加等效弯曲韧性指数纤维订做厂家权威推荐榜单:压纹纤维/增韧纤维/高延性混凝土纤维源头厂家精选
  • sqli-labs通关(持续更新)