在 C 語言中解析一個數組類型的 JSON 文件,可以使用第三方庫來實現,比如 cJSON。cJSON 是一個在 C 語言使用的解析 JSON 的庫,使用起來非常簡單。
首先,我們需要在代碼中引入 cJSON 庫,這個庫的下載方式有兩種,一種是下載源代碼編譯安裝,另一種則是在 GitHub 上下載可以直接使用的頭文件和源代碼文件。假設我們已經將 cJSON 下載下來了,我們需要在代碼中引入頭文件,如下所示。
#include "cJSON.h"
然后,定義一個字符串變量,將我們要解析的 JSON 字符串賦值給這個變量。比如,我們要解析的 JSON 文件如下所示:
{ "name": "Tom", "age": 22, "hobbies": ["reading", "music", "sports"] }
那么我們可以定義一個字符數組來存儲這個 JSON 字符串,如下所示。
char json_str[] = "{\"name\":\"Tom\",\"age\":22,\"hobbies\":[\"reading\",\"music\",\"sports\"]}";
接下來,我們需要通過 cJSON_Parse() 函數來解析這個 JSON 字符串。這個函數將會返回一個 cJSON 對象類型的指針,通過這個指針,我們可以獲取 JSON 中的各個字段的值。如下所示。
cJSON *root = cJSON_Parse(json_str);
在獲取 hobbies 字段的值時,由于它是一個數組類型的值,我們需要使用 cJSON_GetObjectItem() 函數獲取這個字段的 cJSON 對象指針,然后再通過 cJSON_GetArrayItem() 函數獲取數組中的每一個元素值。如下所示。
cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies"); int hobbies_size = cJSON_GetArraySize(hobbies); for (int i = 0; i< hobbies_size; i++) { cJSON *hobby = cJSON_GetArrayItem(hobbies, i); printf("hobby %d: %s\n", i, hobby->valuestring); }
最后,在使用完 cJSON 對象的指針后,我們需要調用 cJSON_Delete() 函數來釋放內存。如下所示。
cJSON_Delete(root);
以上就是在 C 語言中解析數組類型的 JSON 文件的方式。使用 cJSON 庫可以方便快捷地實現解析 JSON 功能,為我們的開發工作帶來很大便利性。
上一篇data.json格式
下一篇vue ast是什么