C語言中常用的數(shù)據(jù)類型中,數(shù)組是一種非常重要的數(shù)據(jù)結(jié)構(gòu)。在處理JSON格式數(shù)據(jù)時(shí),由于JSON數(shù)據(jù)通常表示為鍵值對(duì)的形式,因此需要將JSONArray中的元素保存為鍵值對(duì)中的值,而屬性名可以通過數(shù)組下標(biāo)來獲取。下面我們就來看看如何在C語言中獲取JSON數(shù)組屬性名的方法。
// 創(chuàng)建JSON對(duì)象 cJSON *json = cJSON_Parse(data); if (!json) { printf("json error: %s\n", cJSON_GetErrorPtr()); return -1; } // 獲取JSONArray cJSON *arr = cJSON_GetObjectItemCaseSensitive(json, "array_name"); if (!cJSON_IsArray(arr)) { printf("json error: array_name is not array\n"); cJSON_Delete(json); return -1; } // 獲取JSONArray長度 size_t arr_size = cJSON_GetArraySize(arr); // 循環(huán)遍歷JSONArray for (int i = 0; i< arr_size; i++) { // 獲取JSON對(duì)象 cJSON *item = cJSON_GetArrayItem(arr, i); if (!cJSON_IsObject(item)) { continue; } // 獲取屬性名 cJSON *name = cJSON_GetObjectItemCaseSensitive(item, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("name: %s\n", name->valuestring); } } // 釋放JSON對(duì)象 cJSON_Delete(json);
在上面的代碼中,我們首先創(chuàng)建了一個(gè)JSON對(duì)象,并通過cJSON_Parse()函數(shù)將JSON格式數(shù)據(jù)解析成一個(gè)cJSON對(duì)象。接著獲取JSONArray并判斷其類型是否正確,然后獲取JSONArray的長度并循環(huán)遍歷所有元素。在循環(huán)中,我們可以通過cJSON_GetObjectItemCaseSensitive()函數(shù)獲取JSON對(duì)象,并再次判斷其類型是否正確。最后,我們通過cJSON_GetObjectItemCaseSensitive()函數(shù)獲取JSON對(duì)象的屬性名,并輸出其值。