在C程序中保存JSON數據到本地文件是一項很常見的任務,下面我們就來介紹一下該如何實現。
首先,我們需要使用CJSON庫來解析、創建、修改JSON數據。在保存JSON到本地文件之前,需要將JSON數據轉換成字符串形式。而在讀取本地JSON文件時,則需要將讀取到的字符串數據轉換為JSON格式。
//保存JSON到本地文件 cJSON *root = cJSON_CreateObject(); //創建一個JSON對象 cJSON_AddStringToObject(root, "name", "張三"); //添加一個字符串數據 cJSON_AddNumberToObject(root, "age", 20); //添加一個數字數據 char *json_str = cJSON_Print(root); //將JSON對象轉換為字符串 FILE *fp; fp = fopen("test.json", "w"); //以w方式打開文件 fputs(json_str, fp); //寫入JSON字符串 fclose(fp); //關閉文件 cJSON_Delete(root); //釋放JSON對象和字符串空間
//從本地文件讀取JSON數據 char *json_str; FILE *fp; long file_size; fp = fopen("test.json", "r"); //以r方式打開文件 if (!fp) { printf("無法打開文件!\n"); exit(1); } fseek(fp, 0, SEEK_END); file_size = ftell(fp); fseek(fp, 0, SEEK_SET); json_str = (char*) malloc(file_size + 1); fread(json_str, file_size, 1, fp); //讀取文件內容 fclose(fp); //關閉文件 cJSON *root = cJSON_Parse(json_str); //將JSON字符串轉換為JSON對象 free(json_str); //釋放堆空間 // 訪問JSON數據 cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); printf("%s的年齡是%d歲\n", name->valuestring, age->valueint); cJSON_Delete(root); //釋放JSON對象和字符串空間
注意:在使用完CJSON庫的函數后,需要釋放相關的空間。在保存JSON到本地文件時,需要以"w"方式打開文件,以便進行寫入操作;在讀取本地JSON文件時,需要以"r"方式打開文件,以便進行讀取操作。