今天我們來探討一下C語言如何讀取JSON數(shù)據(jù)文件。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,具有可讀性高、易于理解、易于編寫和解析、靈活性好等特點(diǎn),所以在現(xiàn)代網(wǎng)絡(luò)應(yīng)用中極為常見。很多時(shí)候我們需要在C語言中讀取JSON數(shù)據(jù)文件并對(duì)數(shù)據(jù)進(jìn)行處理,那么要如何實(shí)現(xiàn)呢?
#include#include #include #include int main() { FILE *fp; char buf[1024]; cJSON *json; fp = fopen("data.json", "r"); fread(buf, 1, 1024, fp); fclose(fp); json = cJSON_Parse(buf); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON *item = cJSON_GetObjectItem(json, "name"); printf("name: %s\n", item->valuestring); cJSON *array = cJSON_GetObjectItem(json, "tags"); int array_size = cJSON_GetArraySize(array); for (int i = 0; i< array_size; i++) { cJSON *tag = cJSON_GetArrayItem(array, i); printf("tag%d: %s\n", i, tag->valuestring); } cJSON_Delete(json); return 0; }
上面的代碼通過使用cJSON庫來解析JSON文件,并且打印了JSON文件中的name和tags數(shù)組。首先打開文件,使用fread來讀取文件內(nèi)容,然后調(diào)用cJSON_Parse解析JSON字符串并返回一個(gè)json對(duì)象。如果解析失敗,則可以通過調(diào)用cJSON_GetErrorPtr()來獲取錯(cuò)誤信息并打印。我們可以通過使用cJSON_GetObjectItem和cJSON_GetArrayItem來獲取JSON對(duì)象中的屬性值,需要注意的是這些函數(shù)返回的都是cJSON對(duì)象。
這里我們使用了cJSON對(duì)象的valuestring屬性來獲得屬性值并打印出來,當(dāng)然還有其他的屬性類型可以參考cJSON的文檔。最后別忘了刪除json對(duì)象以免內(nèi)存泄漏。
上一篇python 獲取主目錄
下一篇es是json格式嗎