在C語言中讀取JSON格式的配置文件比較常見,本文將介紹如何使用C語言讀取JSON文件。
首先需要用到的是JSON庫,目前比較常用的有cJSON和json-c庫。
// 使用cJSON庫讀取JSON文件 #include <stdio.h> #include <cJSON.h> int main() { FILE *fp = fopen("config.json", "rb"); // 打開JSON文件 if(fp == NULL) { printf("open config.json fail!"); return -1; } fseek(fp, 0, SEEK_END); int len = ftell(fp); // 獲取文件長度 fseek(fp, 0, SEEK_SET); char *s = malloc(len + 1); fread(s, len, 1, fp); s[len] = '\0'; fclose(fp); cJSON *root = cJSON_Parse(s); if(!root) { printf("parse fail!\n"); return -1; } cJSON *node = cJSON_GetObjectItem(root, "name"); // 獲取節(jié)點(diǎn) printf("name: %s\n", node->valuestring); node = cJSON_GetObjectItem(root, "age"); printf("age: %d\n", node->valueint); cJSON_Delete(root); return 0; }
這段代碼使用cJSON庫打開并讀取JSON文件"config.json",然后通過cJSON_Parse函數(shù)將讀取到的內(nèi)容轉(zhuǎn)換為JSON對象,在通過cJSON_GetObjectItem函數(shù)獲取指定名稱的JSON節(jié)點(diǎn)。
當(dāng)然,使用json-c庫也是類似的,只需要包含頭文件json-c/json.h,接下來的操作和cJSON基本一致。
// 使用json-c庫讀取JSON文件 #include <stdio.h> #include <json-c/json.h> int main() { FILE *fp = fopen("config.json", "rb"); // 打開JSON文件 if(fp == NULL) { printf("open config.json fail!"); return -1; } fseek(fp, 0, SEEK_END); int len = ftell(fp); // 獲取文件長度 fseek(fp, 0, SEEK_SET); char *s = malloc(len + 1); fread(s, len, 1, fp); s[len] = '\0'; fclose(fp); struct json_object *root = json_tokener_parse(s); if(!root) { printf("parse fail!\n"); return -1; } struct json_object *node = json_object_object_get(root, "name"); // 獲取節(jié)點(diǎn) printf("name: %s\n", json_object_get_string(node)); node = json_object_object_get(root, "age"); printf("age: %d\n", json_object_get_int(node)); json_object_put(root); return 0; }
以上就是使用C語言讀取JSON配置文件的方法,可以根據(jù)實(shí)際需求選擇使用cJSON或json-c庫來完成。