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;
}

简单明了,无需解释!

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...