在C語(yǔ)言中,如果需要解析JSON文件夾,我們可以使用一些第三方庫(kù)來(lái)幫助我們完成這個(gè)任務(wù)。我們這里介紹使用cJSON庫(kù)來(lái)解析任意JSON文件夾。
#include "cJSON.h" #include <stdio.h> void printJson(cJSON *json) { // 遍歷json中所有的item cJSON_ArrayForEach(item, json) { // 根據(jù)item的類(lèi)型打印相應(yīng)的值 if (cJSON_IsString(item)) { printf("string: %s\n", item->valuestring); } else if (cJSON_IsNumber(item)) { printf("number: %f\n", item->valuedouble); } else if (cJSON_IsBool(item)) { printf("bool: %d\n", item->valueint); } else if (cJSON_IsNull(item)) { printf("null: %d\n", item->type); } else if (cJSON_IsArray(item)) { printf("array:\n"); printJson(item); } else if (cJSON_IsObject(item)) { printf("object:\n"); printJson(item); } else { printf("unknown type: %d\n", item->type); } } } int main() { // 讀取json文件 FILE *fp = fopen("example.json", "rb"); fseek(fp, 0, SEEK_END); long len = ftell(fp); fseek(fp, 0, SEEK_SET); char *content = (char*)malloc(len + 1); fread(content, 1, len, fp); fclose(fp); content[len] = '\0'; // 解析json cJSON *json = cJSON_Parse(content); // 打印結(jié)果 printJson(json); // 釋放內(nèi)存 cJSON_Delete(json); free(content); return 0; }
代碼中,我們使用了cJSON庫(kù)中的cJSON_Parse函數(shù)來(lái)解析JSON文件。解析后,我們遍歷了JSON文件中所有的item,然后打印每個(gè)item的類(lèi)型和值。如果item是嵌套的數(shù)組或?qū)ο螅覀兪褂眠f歸的方式來(lái)遍歷。