C List是一種動態(tài)的數(shù)據(jù)結(jié)構(gòu),可以實現(xiàn)自適應(yīng)內(nèi)存分配、插入、刪除等操作,在C語言中廣泛使用。而JSON則是一種輕量級的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)傳輸。因此,將C List轉(zhuǎn)換為JSON十分必要。
#include#include #include #include typedef struct _node { int value; struct _node *next; } Node; int main() { Node *head = NULL, *prev = NULL, *curr = NULL; for (int i = 0; i< 5; i++) { curr = (Node *)malloc(sizeof(Node)); curr->value = i; curr->next = NULL; if (i == 0) { head = curr; } if (prev != NULL) { prev->next = curr; } prev = curr; } cJSON *json = cJSON_CreateArray(); curr = head; while (curr != NULL) { cJSON *item = cJSON_CreateObject(); cJSON_AddNumberToObject(item, "value", curr->value); cJSON_AddItemToArray(json, item); curr = curr->next; } char *json_str = cJSON_Print(json); printf("%s\n", json_str); free(json_str); cJSON_Delete(json); curr = head; while (curr != NULL) { prev = curr->next; free(curr); curr = prev; } return 0; }
以上代碼演示了將一個包含5個元素的C List轉(zhuǎn)換為JSON的過程。首先定義了一個簡單的Node結(jié)構(gòu)體,包含value和next兩個成員。然后創(chuàng)建了一個5個元素的鏈表,每個元素的value為i,最后一個節(jié)點的next指針為NULL,表示鏈表結(jié)束。此處為了方便演示代碼并未加入錯誤處理和內(nèi)存釋放等操作。
接下來,使用cJSON庫的函數(shù),創(chuàng)建一個空的JSON數(shù)組。然后用while循環(huán)遍歷鏈表,將每個元素封裝成JSON對象,再將JSON對象添加到JSON數(shù)組中。最后,使用cJSON_Print函數(shù)將JSON數(shù)組轉(zhuǎn)換為字符串,并輸出到控制臺中。
最后,需要記得釋放內(nèi)存。釋放JSON字符串內(nèi)存的函數(shù)為free,釋放JSON數(shù)組內(nèi)存的函數(shù)為cJSON_Delete。同時,需要遍歷整個鏈表,釋放每個Node節(jié)點的內(nèi)存。
上一篇python 文科生
下一篇python 文檔查重