CJSON是一個(gè)輕量級(jí)的JSON解析庫,它可以幫助將JSON格式的數(shù)據(jù)轉(zhuǎn)換成C數(shù)據(jù)類型(例如:數(shù)組、對(duì)象、字符串等)。在我們的開發(fā)工作中,需要經(jīng)常處理大量的數(shù)據(jù),而JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,被廣泛應(yīng)用于Web開發(fā)、移動(dòng)應(yīng)用開發(fā)等領(lǐng)域。在本篇文章中,我們將介紹如何將CJSON轉(zhuǎn)換成數(shù)組對(duì)象。
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庫中的兩個(gè)重要函數(shù):cJSON_Parse和cJSON_GetObjectItem。cJSON_Parse函數(shù)將JSON格式的字符串解析成cJSON格式的數(shù)據(jù)。而cJSON_GetObjectItem函數(shù)則可以以鍵名為參數(shù),獲取對(duì)應(yīng)的數(shù)組對(duì)象cJSON數(shù)據(jù)。
接著,我們可以使用cJSON_GetArraySize函數(shù)獲取數(shù)組中元素的個(gè)數(shù)(長(zhǎng)度),然后通過循環(huán)遍歷獲取元素。由于C語言不支持動(dòng)態(tài)數(shù)組,所以我們需要手動(dòng)分配存儲(chǔ)空間,并使用cJSON_GetArrayItem函數(shù)獲取數(shù)組元素。最后,我們通過遍歷得到的元素來處理數(shù)組中每一個(gè)元素。
以上就是將CJSON數(shù)據(jù)轉(zhuǎn)換成數(shù)組對(duì)象的完整代碼,如果您需要更詳細(xì)的了解,請(qǐng)查看CJSON的官方文檔。