C語言中,列表是一種非常常見的數據結構。使用C語言的程序開發者通常需要將列表轉換為JSON字符串進行傳輸或存儲。JSON是一種輕量級的數據交換格式,以易于讀寫和語言無關的方式支持結構化數據。下面將介紹如何將C list轉換為JSON字符串。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <jansson.h> //定義C list結構體 typedef struct node { int data; struct node *next; } node; //創建節點 node* create_node(int data) { node *newnode = (node*)malloc(sizeof(node)); newnode->data = data; newnode->next = NULL; return newnode; } //向列表中添加節點 void add_node(node **head, int data) { node *newnode = create_node(data); if (*head == NULL) { *head = newnode; } else { node *current = *head; while (current->next != NULL) { current = current->next; } current->next = newnode; } } //將列表轉換為JSON字符串 json_t* list_to_json(node *head) { json_t *json_list = json_array(); node *current = head; while (current != NULL) { json_t *json_node = json_object(); json_object_set_new(json_node, "data", json_integer(current->data)); json_array_append_new(json_list, json_node); current = current->next; } return json_list; } int main() { node *head = NULL; add_node(&head, 1); add_node(&head, 2); add_node(&head, 3); json_t *json_list = list_to_json(head); char *json_string = json_dumps(json_list, JSON_INDENT(2)); printf("%s", json_string); free(json_string); json_decref(json_list); return 0; }
以上代碼中,首先定義了C list的結構體和操作函數。
在主函數中,向列表中添加了三個節點,然后通過調用list_to_json()函數將列表轉換為JSON字符串。
list_to_json()函數中,首先創建了一個名為json_list的JSON數組。然后遍歷鏈表中的每個節點,創建名為json_node的JSON對象,并將節點中的data值加入到JSON對象中。最后將JSON對象添加到JSON數組中。
最后使用json_dumps()函數將JSON數組轉換為JSON字符串,并輸出到控制臺。