CJSON是一個輕量級的JSON解析庫,它可以幫助將JSON格式的數(shù)據(jù)轉(zhuǎn)換成C數(shù)據(jù)類型(例如:數(shù)組、對象、字符串等)。在我們的開發(fā)工作中,需要經(jīng)常處理大量的數(shù)據(jù),而JSON作為一種輕量級的數(shù)據(jù)交換格式,被廣泛應(yīng)用于Web開發(fā)、移動應(yīng)用開發(fā)等領(lǐng)域。在本篇文章中,我們將介紹如何將CJSON轉(zhuǎn)換成數(shù)組對象。
int i; cJSON *json = NULL; char *str = "{\"name\":\"Tom\",\"age\":26,\"interests\":[\"swimming\",\"running\",\"reading\"]}"; json = cJSON_Parse(str); if (!json){ printf(" Error before: [%s]\n",cJSON_GetErrorPtr()); }else{ cJSON *interests = NULL; interests = cJSON_GetObjectItem(json, "interests"); int arrlen = cJSON_GetArraySize(interests); char **arr = malloc(sizeof(char *) * arrlen); for(i = 0; i< arrlen; i++) { cJSON *item = cJSON_GetArrayItem(interests, i); arr[i] = item->valuestring; printf("%s\n", arr[i]); } }
首先,我們需要用到CJSON庫中的兩個重要函數(shù):cJSON_Parse和cJSON_GetObjectItem。cJSON_Parse函數(shù)將JSON格式的字符串解析成cJSON格式的數(shù)據(jù)。而cJSON_GetObjectItem函數(shù)則可以以鍵名為參數(shù),獲取對應(yīng)的數(shù)組對象cJSON數(shù)據(jù)。
接著,我們可以使用cJSON_GetArraySize函數(shù)獲取數(shù)組中元素的個數(shù)(長度),然后通過循環(huán)遍歷獲取元素。由于C語言不支持動態(tài)數(shù)組,所以我們需要手動分配存儲空間,并使用cJSON_GetArrayItem函數(shù)獲取數(shù)組元素。最后,我們通過遍歷得到的元素來處理數(shù)組中每一個元素。
以上就是將CJSON數(shù)據(jù)轉(zhuǎn)換成數(shù)組對象的完整代碼,如果您需要更詳細(xì)的了解,請查看CJSON的官方文檔。