在C語言中,我們可以使用開源庫 cJSON 來處理 JSON 數據。cJSON 是一個輕量級的 C 庫,可以幫助我們解析、構建并打印 JSON 數據。
在本地保存 JSON 數據,一般可以使用文件流操作。具體步驟如下:
- 使用 cJSON 庫構建 JSON 數據
- 將 JSON 數據轉換成字符串
- 創建文件指針,并打開文件
- 將 JSON 字符串寫入文件
- 關閉文件指針和 cJSON 對象
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20);
char *json_str = cJSON_Print(root);
FILE *fp = fopen("data.json", "w"); if (fp == NULL) { printf("Error: cannot open file.\n"); return 1; }
fwrite(json_str, strlen(json_str), 1, fp);
fclose(fp); cJSON_Delete(root);
完整代碼示例:
#include <stdio.h> #include <string.h> #include <cJSON.h> int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20); char *json_str = cJSON_Print(root); FILE *fp = fopen("data.json", "w"); if (fp == NULL) { printf("Error: cannot open file.\n"); return 1; } fwrite(json_str, strlen(json_str), 1, fp); fclose(fp); cJSON_Delete(root); return 0; }
上述代碼將創建 JSON 對象并寫入文件,文件名為 data.json。我們可以通過以下方式讀取該文件:
FILE *fp = fopen("data.json", "r"); fseek(fp, 0, SEEK_END); long size = ftell(fp); char *json_str = (char*)malloc(size + 1); rewind(fp); fread(json_str, size, 1, fp); fclose(fp); json_str[size] = '\0'; cJSON *root = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); printf("name: %s\nage: %d\n", name->valuestring, age->valueint); cJSON_Delete(root); free(json_str);
注意在讀取完文件后需要釋放內存。