在C語言中,有一種稱為List(鏈表)的數(shù)據(jù)結(jié)構(gòu),它能夠動態(tài)地添加和移除元素。當我們需要將這些元素轉(zhuǎn)化為JSON字符串數(shù)組的時候,可以使用以下代碼:
#include#include #include typedef struct Person { char* name; int age; struct Person* next; } Person; Person* createPerson(char* name, int age) { Person* newPerson = (Person*)malloc(sizeof(Person)); newPerson->name = name; newPerson->age = age; newPerson->next = NULL; return newPerson; } Person* addPersonToList(Person* head, char* name, int age) { Person* newPerson = createPerson(name, age); newPerson->next = head; return newPerson; } cJSON* listToJsonArray(Person* head) { cJSON* jsonArray = cJSON_CreateArray(); while (head) { cJSON* personJson = cJSON_CreateObject(); cJSON_AddStringToObject(personJson, "name", head->name); cJSON_AddNumberToObject(personJson, "age", head->age); cJSON_AddItemToArray(jsonArray, personJson); head = head->next; } return jsonArray; } int main() { Person* head = NULL; head = addPersonToList(head, "Alice", 20); head = addPersonToList(head, "Bob", 25); head = addPersonToList(head, "Carol", 30); cJSON* jsonArray = listToJsonArray(head); char* jsonString = cJSON_Print(jsonArray); printf("%s\n", jsonString); free(jsonString); cJSON_Delete(jsonArray); return 0; }
首先,我們定義一個Person結(jié)構(gòu)體,包含名字和年齡兩個屬性以及一個指向下一個Person的指針。然后,我們定義了一個createPerson函數(shù)用于創(chuàng)建新的Person對象,以及一個addPersonToList函數(shù)用于將Person對象添加到鏈表中。接著,我們定義了一個listToJsonArray函數(shù)用于將鏈表中所有的Person轉(zhuǎn)化為JSON字符串數(shù)組。
在listToJsonArray函數(shù)中,我們首先創(chuàng)建了一個空的JSON字符串數(shù)組。接著,我們使用一個while循環(huán)遍歷整個鏈表,對每一個Person對象創(chuàng)建一個新的JSON對象,并將其加入到JSON字符串數(shù)組中。最后,我們返回JSON字符串數(shù)組。
最后,在main函數(shù)中,我們創(chuàng)建了一個鏈表,將其轉(zhuǎn)化為JSON字符串數(shù)組,并打印輸出結(jié)果。注意,我們需要使用cJSON_Print函數(shù)將JSON字符串數(shù)組轉(zhuǎn)化為字符串,并在使用完畢后釋放內(nèi)存。