cJSON解析一例通

前端之家收集整理的这篇文章主要介绍了cJSON解析一例通前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#include<iostream>
#include"cJson/cJSON.h"

usingnamespacestd;

voidparse_json_node(cJSON*json,size_t*align_count)
{
//打印缩进
for(inti=0;i<*align_count;i++)
{
printf("");
}
switch(json->type)
{
casecJSON_False:
printf("%s:false",json->string);
break;
casecJSON_True:
printf("%s:true",json->string);
break;
casecJSON_NULL:
printf("null");
break;
casecJSON_Number:
printf("%s:%ll",json->string,json->valuedouble);
break;
casecJSON_String:
printf("%s:\"%s\"",json->valuestring);
break;
casecJSON_Array:
{
if(json->string)
{
printf("%s:",json->string);
}
++*align_count;
printf("[\n");


intlen=cJSON_GetArraySize(json);
for(inti=0;i<len;i++)
{
cJSON*child_json=cJSON_GetArrayItem(json,i);
parse_json_node(child_json,align_count);
printf("\n");
}
--*align_count;
for(inti=0;i<*align_count;i++)
{
printf("");
}
printf("]");

}
break;
casecJSON_Object:
{
if(json->string)
{
printf("%s:",json->string);
}
++*align_count;
printf("{\n");
intlen=cJSON_GetArraySize(json);
for(inti=0;i<len;i++)
{
cJSON*child_json=cJSON_GetArrayItem(json,align_count);
printf("\n");
}
--*align_count;
for(inti=0;i<*align_count;i++)
{
printf("");
}
printf("}");
}
break;
}
}

intmain()
{
longlongfilesize=0;
FILE*file=fopen("json/test5","rb+");
fseek(file,SEEK_END);
filesize=ftell(file);
fseek(file,SEEK_SET);
char*buff=newchar[filesize];
fread(buff,1,filesize,file);
fclose(file);
cJSON*json=cJSON_Parse(buff);

size_talign_count=0;
parse_json_node(json,&align_count);

/*cJSON*menu=cJSON_GetObjectItem(json,"menu");
intmenu_size=cJSON_GetArraySize(menu);
cJSON*items=cJSON_GetArrayItem(menu,1);
intitems_size=cJSON_GetArraySize(items);
cJSON*item1=cJSON_GetArrayItem(items,0);
intitem1_size=cJSON_GetArraySize(item1);
cJSON*item1_attr1=cJSON_GetArrayItem(item1,0);
*/
return0;
}

简单明了,无需解释!

原文链接:https://www.f2er.com/json/289946.html

猜你在找的Json相关文章