- #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;
- }
简单明了,无需解释!