JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,在許多應用程序中都得到了廣泛的應用。在C語言中,我們可以使用第三方庫來讀取和寫入JSON格式的文件。
首先,我們需要使用一個JSON庫。常用的有cJSON和Jansson。這里以cJSON為例,在cJSON官網上可以直接下載源代碼。
#include <stdio.h> #include <cJSON.h> int main() { /* 創建JSON對象 */ cJSON *root = cJSON_CreateObject(); /* 向JSON對象中添加鍵值對 */ cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20); cJSON_AddFalseToObject(root, "isMarried"); /* 將JSON對象轉換為字符串 */ char *json_str = cJSON_Print(root); /* 打印JSON字符串 */ printf("%s\n", json_str); /* 將JSON字符串寫入文件 */ FILE *fp = fopen("test.json", "w"); fprintf(fp, "%s\n", json_str); fclose(fp); /* 釋放JSON對象 */ cJSON_Delete(root); return 0; }
上面的代碼演示了如何使用cJSON創建一個JSON對象,并向其中添加鍵值對,最后將其轉換為字符串并寫入文件。需要注意的是,在使用完JSON對象后需要手動將其釋放。
接下來,我們來看看如何讀取一個JSON文件:
#include <stdio.h> #include <cJSON.h> int main() { /* 從文件中讀取JSON字符串 */ FILE *fp = fopen("test.json", "r"); fseek(fp, 0, SEEK_END); long file_size = ftell(fp); fseek(fp, 0, SEEK_SET); char *json_str = (char*)malloc(file_size + 1); fread(json_str, 1, file_size, fp); fclose(fp); /* 解析JSON字符串 */ cJSON *root = cJSON_Parse(json_str); /* 從JSON對象中獲取鍵值對 */ cJSON *name = cJSON_GetObjectItem(root, "name"); if (name != NULL && cJSON_IsString(name)) { printf("%s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItem(root, "age"); if (age != NULL && cJSON_IsNumber(age)) { printf("%d\n", age->valueint); } cJSON *isMarried = cJSON_GetObjectItem(root, "isMarried"); if (isMarried != NULL && cJSON_IsFalse(isMarried)) { printf("未婚\n"); } /* 釋放JSON對象 */ cJSON_Delete(root); return 0; }
上面的代碼演示了如何從文件中讀取JSON字符串,并解析為JSON對象。之后我們就可以通過cJSON_GetObjectItem函數來獲取JSON對象中的鍵值對。
總之,通過使用第三方庫,我們可以很方便地在C語言中讀取和寫入JSON格式的文件,實現應用程序之間的數據交換。
上一篇c 讀取json文件
下一篇vue-py.js