C語(yǔ)言提供了一種叫做list的數(shù)據(jù)結(jié)構(gòu),它可以很方便地管理動(dòng)態(tài)內(nèi)存。但有時(shí)我們需要將這些數(shù)據(jù)轉(zhuǎn)換為JSON字符串?dāng)?shù)組,以便在網(wǎng)絡(luò)傳輸或數(shù)據(jù)存儲(chǔ)中使用。本文將介紹如何將C list轉(zhuǎn)換為JSON字符串?dāng)?shù)組。
// 引入json-c庫(kù) #include <json-c/json.h> // 將C list轉(zhuǎn)換為JSON字符串?dāng)?shù)組 char** list_to_json_array(struct list* lst) { int len = list_length(lst); char** result = malloc((len + 1) * sizeof(char*)); for (int i = 0; i < len; i++) { // 獲取list中的值 void* item = list_get(lst, i); // 轉(zhuǎn)換為json對(duì)象 json_object* obj = json_object_new_int(*(int*)item); // 轉(zhuǎn)換為json字符串 const char* str = json_object_to_json_string(obj); // 復(fù)制到結(jié)果數(shù)組中 result[i] = strdup(str); json_object_put(obj); } result[len] = NULL; return result; }
以上代碼將C list中的所有值遍歷,將其轉(zhuǎn)換為JSON對(duì)象,并將其轉(zhuǎn)換為JSON字符串。然后將所有字符串的指針存儲(chǔ)在一個(gè)字符指針數(shù)組中,以便可以在需要時(shí)訪問(wèn)它們。
使用時(shí),我們只需調(diào)用list_to_json_array()函數(shù),將C list傳遞給它,就可以得到JSON字符串?dāng)?shù)組。如果我們希望使用這些字符串,我們只需遍歷數(shù)組并使用它們即可:
char** json_array = list_to_json_array(my_list); for (int i = 0; json_array[i] != NULL; i++) { // 通過(guò)json-c庫(kù)解析JSON字符串 json_object* obj = json_tokener_parse(json_array[i]); // 處理json對(duì)象 // ... json_object_put(obj); free(json_array[i]); } free(json_array);
以上代碼展示了如何使用json-c庫(kù)解析JSON字符串,并在使用后釋放它們。
總之,將C list轉(zhuǎn)換為JSON字符串?dāng)?shù)組非常簡(jiǎn)單,只需遍歷列表并將每個(gè)值轉(zhuǎn)換為JSON字符串即可。然后將所有字符串的指針存儲(chǔ)在字符指針數(shù)組中,以便我們可以方便地使用它們。