JSON是一種輕量級(jí)數(shù)據(jù)交換格式,成為現(xiàn)代應(yīng)用程序中最流行的數(shù)據(jù)格式之一。C語(yǔ)言中有很多解析JSON的庫(kù),如 cJSON、Jansson、yajl等。本文主要介紹如何使用cJSON庫(kù)解析JSON字符串?dāng)?shù)組。
CJSON是一個(gè)小巧的JSON解析器,可以在C/C++中輕松地使用它來(lái)處理JSON數(shù)據(jù)。使用cJSON解析JSON字符串?dāng)?shù)組的步驟如下:
char *json_string = "[\"apple\",\"banana\",\"orange\"]";//JSON字符串?dāng)?shù)組
cJSON *json = cJSON_Parse(json_string);//解析JSON字符串?dāng)?shù)組
if (json == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
}
else {
cJSON *json_array = NULL;
json_array = cJSON_GetArrayItem(json, 0);//獲取數(shù)組對(duì)象
if (json_array != NULL) {
int array_size = cJSON_GetArraySize(json_array);//獲取數(shù)組大小
for (int i = 0; i< array_size; i++) {
cJSON *item = cJSON_GetArrayItem(json_array, i);//獲取數(shù)組元素
printf("item[%d]:%s\n", i, item->valuestring);
}
}
else {
printf("json array is NULL\n");
}
cJSON_Delete(json);
}
代碼解析:
1、定義JSON字符串?dāng)?shù)組。
char *json_string = "[\"apple\",\"banana\",\"orange\"]";//JSON字符串?dāng)?shù)組
2、解析JSON字符串?dāng)?shù)組。
cJSON *json = cJSON_Parse(json_string);//解析JSON字符串?dāng)?shù)組
3、判斷JSON是否解析成功,獲取數(shù)組對(duì)象。
if (json == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
}
else {
cJSON *json_array = NULL;
json_array = cJSON_GetArrayItem(json, 0);//獲取數(shù)組對(duì)象
4、判斷數(shù)組對(duì)象是否為空。
if (json_array != NULL) {
int array_size = cJSON_GetArraySize(json_array);//獲取數(shù)組大小
5、遍歷數(shù)組元素。
for (int i = 0; i< array_size; i++) {
cJSON *item = cJSON_GetArrayItem(json_array, i);//獲取數(shù)組元素
printf("item[%d]:%s\n", i, item->valuestring);
}
6、釋放內(nèi)存。
cJSON_Delete(json);
綜上所述,使用cJSON解析JSON字符串?dāng)?shù)組十分簡(jiǎn)單,只需按照上述步驟進(jìn)行操作即可。