最近在做一個項目,需要從一個 JSON 文件中讀取數據。在 C 語言中,我們有很多庫可以用來處理 JSON,比如 cJSON 和 Jansson。這里我們來看一下如何使用 cJSON 庫來讀取 JSON 文件。
#include <stdio.h>
#include <cjson/cJSON.h>
int main() {
// 讀取 JSON 文件
FILE* file = fopen("data.json", "r");
if (file == NULL) {
printf("文件不存在\n");
return 1;
}
// 獲取文件長度
fseek(file, 0, SEEK_END);
long length = ftell(file);
fseek(file, 0, SEEK_SET);
// 讀取文件內容
char* content = (char*)malloc(length + 1);
fread(content, 1, length, file);
content[length] = '\0';
fclose(file);
// 解析 JSON
cJSON* root = cJSON_Parse(content);
if (root == NULL) {
printf("解析失敗\n");
return 1;
}
// 獲取對象中的值
cJSON* name = cJSON_GetObjectItem(root, "name");
cJSON* age = cJSON_GetObjectItem(root, "age");
printf("姓名:%s\n", name->valuestring);
printf("年齡:%d\n", age->valueint);
// 釋放內存
cJSON_Delete(root);
free(content);
return 0;
}
上面的代碼中,我們使用了 fopen 函數打開 JSON 文件,用 fseek 和 ftell 函數獲取文件長度,然后用 fread 函數讀取文件內容。接著,我們調用 cJSON_Parse 函數解析 JSON,并使用 cJSON_GetObjectItem 函數獲取對象中的值。最后,我們使用 cJSON_Delete 函數和 free 函數釋放內存。
當然,如果 JSON 文件中包含了數組或嵌套對象,我們也可以使用 cJSON 庫來遍歷數組和對象,獲取其中的值。
上一篇python 電影服務器
下一篇python 畫密集分布