在C語言開發中,有時候需要從JSON數據中獲取對象數組。然而,獲取不到JSON對象數組是常見的問題,原因可能是JSON數據格式有誤,也可能是代碼本身存在問題。以下將介紹解決這一問題的方法。
首先,需要確定JSON數據是否為正確的數組格式。JSON對象數組應該以"["作為開頭,以"]"作為結尾,并以逗號分隔每個對象。確保數據無誤后,我們就可以使用cJSON庫來解析JSON數據,從而獲得JSON對象數組。
// 示例代碼 #include "cJSON.h" #include#include #include int main() { char* json_str = "[{\"name\":\"Tom\",\"age\":20},{\"name\":\"Bob\",\"age\":30}]"; // JSON對象數組 cJSON* json = cJSON_Parse(json_str); // 解析JSON數據 if (json == NULL) // 解析失敗 { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON* jsonArray = cJSON_GetArrayItem(json, 0); // 獲取JSON對象數組 if (jsonArray != NULL && cJSON_IsArray(jsonArray)) // 判斷是否為數組 { int size = cJSON_GetArraySize(jsonArray); // 數組長度 for (int i = 0; i< size; i++) { cJSON* item = cJSON_GetArrayItem(jsonArray, i); printf("name: %s, age: %d\n", cJSON_GetObjectItem(item, "name")->valuestring, cJSON_GetObjectItem(item, "age")->valueint); } } cJSON_Delete(json); // 釋放內存 return 0; }
在上述代碼中,我們首先使用cJSON_Parse函數解析JSON數據,然后使用cJSON_GetArrayItem獲取JSON對象數組,判斷其是否為數組類型并獲取其長度,最后使用cJSON_GetArrayItem獲取數組中每個對象的細節信息,例如姓名和年齡。
若無法獲取對象數組,則需檢查JSON數據格式或代碼是否存在問題。
上一篇vue 導入js文件