C語言中使用JSON配置文件
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常被用于API接口返回數據。它由鍵值對組成,可表示對象、數組等數據類型,具有易讀易寫、易于解析的特點。
C語言中使用JSON配置文件,可以將程序中的變量存儲于JSON數據結構中,從而實現程序參數的配置。以下是使用cJSON(一個C語言JSON解析器)編寫的JSON配置文件讀寫代碼:
#include <stdio.h> #include <cJSON.h> int main() { cJSON *root, *config; const char *filename = "config.json"; char *json_string; // 讀取配置文件 FILE *fp = fopen(filename, "r"); if (fp == NULL) { printf("Cannot open file %s\n", filename); return 1; } fseek(fp, 0, SEEK_END); long file_size = ftell(fp); fseek(fp, 0, SEEK_SET); char *json_buffer = (char *)malloc(file_size + 1); fread(json_buffer, 1, file_size, fp); fclose(fp); json_buffer[file_size] = '\0'; // 解析JSON數據 root = cJSON_Parse(json_buffer); if (root == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } free(json_buffer); // 獲取配置內容 config = cJSON_GetObjectItem(root, "config"); if (config == NULL) { printf("Cannot find key 'config'\n"); cJSON_Delete(root); return 1; } // 輸出配置內容 json_string = cJSON_Print(config); printf("Config: %s\n", json_string); free(json_string); cJSON_Delete(root); return 0; }
以上代碼首先讀取配置文件,解析JSON數據,然后通過cJSON_GetObjectItem()函數獲取指定的配置項,最后輸出到控制臺。
在配置文件中,每個鍵值對可以表示一個變量,如:
{ "config": { "server": "127.0.0.1", "port": 8080, "debug": true } }
以上配置文件表示一個服務器的配置,包括服務器地址、端口和是否開啟調試模式三個變量。
使用JSON配置文件可以使程序參數配置更加清晰明了,且具有良好的可讀性。