在C語言開發中,經常需要讀取JSON文件里面的數據,然后進行相關的處理。
下面介紹一個基于cJSON庫,讀取json文件里的值的方法。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "cJSON.h" int main() { const char *filename = "data.json"; // json文件名 char *json_content = NULL; cJSON *root = NULL; /* 讀取json文件內容 */ FILE *fp = fopen(filename, "r"); // 只讀方式打開文件 fseek(fp, 0, SEEK_END); long len = ftell(fp); // 文件長度 fseek(fp, 0, SEEK_SET); json_content = (char *) malloc(len + 1); fread(json_content, 1, len, fp); fclose(fp); /* 解析json字符串為cJSON對象 */ root = cJSON_Parse(json_content); if (!root) { fprintf(stderr, "Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } /* 讀取key對應的value */ cJSON *value = cJSON_GetObjectItem(root, "key"); if (value == NULL) { printf("Can't get the value!\n"); return 1; } else if (cJSON_IsString(value)) { printf("The value is: %s\n", value->valuestring); } else { printf("The value is not string!\n"); } /* 釋放內存 */ cJSON_Delete(root); free(json_content); return 0; }
以上代碼,基于cJSON庫實現了讀取json文件里的key對應的value的功能。
首先需要讀取json文件內容,然后將其解析成cJSON對象,接著通過cJSON_GetObjectItem函數獲取key對應的value,最后判斷value是否為字符串類型,進行相應的處理。
完整執行結果如下:
The value is: value