JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常常用于服務器與客戶端之間的數據傳輸。在C語言中,我們可以使用第三方庫cJSON來生成和解析JSON文件。
首先,我們需要從GitHub上下載cJSON的源碼,并將頭文件和源文件加入到我們的工程中。
#include "cJSON.h" int main(void) { // 生成JSON對象 cJSON *root = cJSON_CreateObject(); // 添加鍵值對 cJSON_AddNumberToObject(root, "age", 18); cJSON_AddStringToObject(root, "name", "Jack"); cJSON_AddBoolToObject(root, "isMale", true); // 轉換成JSON格式 char *jsonStr = cJSON_Print(root); // 保存到文件中 FILE *fp = fopen("example.json", "wb"); fputs(jsonStr, fp); fclose(fp); // 釋放內存 cJSON_Delete(root); free(jsonStr); return 0; }
上面的代碼演示了如何生成一個包含三個鍵值對的JSON對象,并將其保存到example.json文件中。其中,cJSON_CreateObject()用于創建一個JSON對象,cJSON_AddNumberToObject()/cJSON_AddStringToObject()/cJSON_AddBoolToObject()用于添加不同類型的鍵值對,cJSON_Print()用于將對象轉換成字符串格式,fopen()/fputs()/fclose()用于將字符串寫入到文件中,cJSON_Delete()用于釋放內存。
解析JSON文件同樣也非常簡單,還是使用cJSON庫來完成,代碼如下:
#include "cJSON.h" int main(void) { // 讀取JSON文件內容 FILE *fp = fopen("example.json", "rb"); fseek(fp, 0, SEEK_END); int len = ftell(fp); fseek(fp, 0, SEEK_SET); // 將文件指針重置為起始位置 char *jsonStr = (char *)malloc(len + 1); fread(jsonStr, len, 1, fp); fclose(fp); jsonStr[len] = '\0'; // 將字符串末尾加上空字符 // 解析JSON格式 cJSON *root = cJSON_Parse(jsonStr); // 取出鍵值對 cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); cJSON *isMale = cJSON_GetObjectItemCaseSensitive(root, "isMale"); printf("age: %d\n", age->valueint); printf("name: %s\n", name->valuestring); printf("isMale: %d\n", isMale->valueint); // 釋放內存 cJSON_Delete(root); free(jsonStr); return 0; }
上面的代碼演示了如何讀取example.json文件內容并解析為一個JSON對象,然后通過cJSON_GetObjectItemCaseSensitive()函數來獲取指定鍵對應的值,最后分別輸出三個鍵值對的值。
上一篇python 影像去黑邊
下一篇mysql幾個主