C語言中常用的數據類型中,數組是一種非常重要的數據結構。在處理JSON格式數據時,由于JSON數據通常表示為鍵值對的形式,因此需要將JSONArray中的元素保存為鍵值對中的值,而屬性名可以通過數組下標來獲取。下面我們就來看看如何在C語言中獲取JSON數組屬性名的方法。
// 創建JSON對象 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); // 循環遍歷JSONArray for (int i = 0; i< arr_size; i++) { // 獲取JSON對象 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對象 cJSON_Delete(json);
在上面的代碼中,我們首先創建了一個JSON對象,并通過cJSON_Parse()函數將JSON格式數據解析成一個cJSON對象。接著獲取JSONArray并判斷其類型是否正確,然后獲取JSONArray的長度并循環遍歷所有元素。在循環中,我們可以通過cJSON_GetObjectItemCaseSensitive()函數獲取JSON對象,并再次判斷其類型是否正確。最后,我們通過cJSON_GetObjectItemCaseSensitive()函數獲取JSON對象的屬性名,并輸出其值。