在C語言中,list是一種非常常用的數據結構。而在現代web應用中,JSON也是必不可少的數據交換格式。
因此,在C語言中將list轉換為JSON也是一種常見的需求。下面介紹一種方法,通過使用第三方庫cJSON來完成。
#include#include #include "cJSON.h" typedef struct Node { int val; struct Node* next; } Node; Node* create_node(int val) { Node* node = malloc(sizeof(Node)); node->val = val; node->next = NULL; return node; } void add_node(Node** head, int val) { Node* node = create_node(val); node->next = *head; *head = node; } void print_list(Node* head) { while (head != NULL) { printf("%d ", head->val); head = head->next; } printf("\n"); } cJSON* list_to_json(Node* head) { cJSON* array = cJSON_CreateArray(); while (head != NULL) { cJSON_AddItemToArray(array, cJSON_CreateNumber(head->val)); head = head->next; } return array; } int main() { Node* head = NULL; add_node(&head, 3); add_node(&head, 2); add_node(&head, 1); print_list(head); cJSON* json = list_to_json(head); char* str = cJSON_Print(json); printf("%s\n", str); cJSON_Delete(json); free(str); return 0; }
以上代碼中,我們首先定義了一個Node結構體,包含了一個整數值和一個指向下一個節點的指針。我們使用add_node函數向鏈表中添加節點,使用print_list函數打印鏈表的內容。
接下來,我們使用list_to_json函數將鏈表轉換為JSON格式的數組。在該函數中,我們使用cJSON_CreateArray函數創建一個空數組,然后遍歷鏈表中的節點,使用cJSON_AddItemToArray函數將每一個整數值添加到數組中。最終返回該數組。
在main函數中,我們創建一個鏈表,向其中添加三個節點,并打印它們的內容。然后將鏈表轉換為JSON格式,并使用cJSON_Print函數將其轉換為字符串打印出來。最后,我們需要手動釋放JSON對象和字符串。
使用cJSON庫可以很方便地將C中的數據結構轉換為JSON格式。這對于Web應用和其他需要進行數據交換的程序來說非常有用。