c JSON解析數(shù)組對(duì)象是一種常見(jiàn)的編程任務(wù),它允許您從JSON數(shù)據(jù)中獲取并處理數(shù)組中的元素。在c語(yǔ)言中,您可以使用一些庫(kù)來(lái)解析JSON數(shù)據(jù),例如cJSON。
首先,您需要包含cJSON.h頭文件,并使用cJSON_Parse函數(shù)將JSON字符串解析為cJSON對(duì)象:
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_str = "[1, 2, 3, 4, 5]"; cJSON *json = cJSON_Parse(json_str); // 解析數(shù)組元素 /* ... */ cJSON_Delete(json); return 0; }
解析后的cJSON對(duì)象表示JSON數(shù)組,您可以使用cJSON_GetArrayItem函數(shù)獲取其中的元素:
// 解析數(shù)組元素 if (json != NULL) { if (json->type == cJSON_Array) { int array_size = cJSON_GetArraySize(json); for (int i = 0; i< array_size; i++) { cJSON *item = cJSON_GetArrayItem(json, i); if (item != NULL) { printf("%d ", item->valueint); } } } }
在上面的示例中,我們遍歷了數(shù)組中的所有元素,并使用cJSON_GetArrayItem函數(shù)獲取對(duì)應(yīng)索引處的元素,其中item是另一個(gè)cJSON對(duì)象,我們可以使用item->valueint獲取元素的整數(shù)值。
類似地,如果您要解析JSON對(duì)象數(shù)組,您可以使用類似的代碼:
char *json_str = "[{ \"name\": \"Alice\", \"age\": 20 }, { \"name\": \"Bob\", \"age\": 25 }]"; cJSON *json = cJSON_Parse(json_str); if (json != NULL) { if (json->type == cJSON_Array) { int array_size = cJSON_GetArraySize(json); for (int i = 0; i< array_size; i++) { cJSON *item = cJSON_GetArrayItem(json, i); if (item != NULL && item->type == cJSON_Object) { cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *age = cJSON_GetObjectItem(item, "age"); if (name != NULL && name->type == cJSON_String && age != NULL && age->type == cJSON_Number) { printf("%s %d\n", name->valuestring, age->valueint); } } } } } cJSON_Delete(json);
在上面的示例中,我們使用cJSON_GetObjectItem函數(shù)獲取了對(duì)象中的key-value對(duì),并對(duì)它們進(jìn)行了類型檢查和取值操作。