在C語言程序中,經常需要將JSON格式的數據轉換為對象List集合,這里簡單介紹一種基于 cJSON 庫實現的解析方法。
首先我們需要了解 cJSON 庫,這是一個輕量級的C語言JSON解析庫,使用簡單,代碼只有一個頭文件和一個源文件。因此,我們需要將 cJSON 庫的頭文件和源文件加入到我們的工程中。下面是一個示例的JSON字符串:
{ "name":"Tom", "age":18, "gender":"male" }
我們可以使用 cJSON 庫中的函數 cJSON_Parse 將其解析為一個 cJSON 對象類型:
const char* json_str = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"}"; cJSON* root = cJSON_Parse(json_str); if (!root) { printf("Json parse error!\n"); return -1; }
使用 cJSON_Parse 返回的 root 對象,我們就可以獲取 JSON 數據中的各個字段的值。
為了獲取 JSON 數據中的多個對象,我們可以使用 cJSON 數組類型。下面是一個包含兩個 JSON 對象的示例字符串:
[ {"name":"Tom","age":18,"gender":"male"}, {"name":"Lily","age":20,"gender":"female"} ]
我們可以使用 cJSON_Parse 解析為一個 cJSON 對象類型,然后使用 cJSON_GetArrayItem 獲取數組中的各個對象,本例中為 0 和 1:
const char* json_array = "[{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"},{\"name\":\"Lily\",\"age\":20,\"gender\":\"female\"}]"; cJSON* root = cJSON_Parse(json_array); if (!root) { printf("Json parse error!\n"); return -1; } int size = cJSON_GetArraySize(root); for (int i = 0; i< size; ++i) { cJSON* obj = cJSON_GetArrayItem(root, i); // 在這里可以根據 obj 獲取 JSON 對象的各個字段 }
通過這種方法,我們就可以將 JSON 數據轉換為對象 List 集合,方便在 C 語言程序中使用。