JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它采用易于閱讀和編寫的文本格式,且支持多種編程語言中的數據結構。C語言作為一種常用的編程語言,自然也支持對JSON文件的操作。
在C語言中,常用的解析JSON文件庫有 cJSON 和 jsmn,這里以 cJSON 為例介紹如何對JSON文件進行讀寫操作。
/* 讀取JSON文件 */ #include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> int main() { FILE *f = fopen("test.json", "r"); if (!f) { perror("open file failed"); exit(1); } // 將文件內容讀入緩沖區 fseek(f, 0, SEEK_END); long size = ftell(f); fseek(f, 0, SEEK_SET); char *buf = (char *)malloc(size + 1); fread(buf, size, 1, f); fclose(f); // 解析JSON文件 cJSON *root = cJSON_Parse(buf); if (!root) { fprintf(stderr, "parse json file failed\n"); exit(1); } // 獲取JSON對象中的鍵值對 cJSON *name = cJSON_GetObjectItem(root, "name"); printf("name: %s\n", name->valuestring); cJSON *age = cJSON_GetObjectItem(root, "age"); printf("age: %d\n", age->valueint); // 釋放內存 cJSON_Delete(root); free(buf); return 0; } /* 寫入JSON文件 */ #include <stdio.h> #include <cjson/cJSON.h> int main() { // 創建JSON對象 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); // 將JSON對象轉為字符串 char *buf = cJSON_Print(root); // 將字符串寫入文件 FILE *f = fopen("test.json", "w"); if (!f) { perror("open file failed"); exit(1); } fwrite(buf, sizeof(char), strlen(buf), f); fclose(f); // 釋放內存 cJSON_Delete(root); free(buf); return 0; }
通過上述代碼,我們可以很方便地讀取和寫入JSON文件。需要注意的是,在使用 cJSON 時需要在編譯選項中添加 -lcjson 才能正確鏈接該庫。
上一篇vue 管理系統優點
下一篇c#寫httpjson