在C語言中,JSON數據可以被解析成數組和對象兩種形式的數據結構,轉換過程相對簡單。其中,數組轉對象的過程可參考以下代碼:
#include "cJSON.h" #includeint main() { char* arr = "[{\"name\":\"Tom\", \"age\":18}, {\"name\":\"Jack\", \"age\":20}]"; cJSON* array_json = cJSON_Parse(arr); // 將數組解析成對象 cJSON* object_json = cJSON_CreateObject(); for (int i = 0; i< cJSON_GetArraySize(array_json); i++) { cJSON* object = cJSON_GetArrayItem(array_json, i); char* name = cJSON_GetObjectItem(object, "name")->valuestring; cJSON_AddItemToObject(object_json, name, object); } // 輸出轉換后的對象 char* object_str = cJSON_Print(object_json); printf("%s\n", object_str); cJSON_Delete(array_json); cJSON_Delete(object_json); return 0; }
以上代碼中,我們首先用cJSON_Parse函數將JSON數組解析成cJSON類型的數組變量array_json。然后,我們使用cJSON_CreateObject函數創建一個新的cJSON對象。接下來,我們使用循環遍歷array_json數組,通過cJSON_GetArrayItem函數獲取每個子項,再用cJSON_GetObjectItem函數獲取子項中的"name"鍵對應的值,并將該子項加入到新創建的cJSON對象中,其鍵為"name"的值。最后,我們使用cJSON_Print函數將轉換后的cJSON對象數組轉換為字符串并輸出。最后別忘了釋放內存,即調用cJSON_Delete函數將array_json和object_json從內存中刪除。