欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c list 轉 json

劉姿婷1年前9瀏覽0評論

C語言中的鏈表(list)是一種十分常用的數據結構,它可以容納不同類型的數據,并且可以動態擴展和收縮。而JSON(JavaScript Object Notation)則是一種輕量級的數據交換格式,常用于前端頁面的數據傳輸和存儲。將鏈表轉換為JSON格式,可以方便地使用它們在不同系統和平臺之間進行數據交換。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
typedef struct node {
int data;
struct node *next;
} ListNode;
ListNode *createList(int arr[], int n) {
ListNode *head = NULL;
for (int i = n-1; i >= 0; i--) {
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
node->data = arr[i];
node->next = head;
head = node;
}
return head;
}
json_t *listToJson(ListNode *head) {
json_t *jsonList = json_array();
for (ListNode *node = head; node != NULL; node = node->next) {
json_t *jsonNode = json_object();
json_object_set_new(jsonNode, "data", json_integer(node->data));
if (node->next)
json_object_set_new(jsonNode, "next", json_string("true"));
else
json_object_set_new(jsonNode, "next", json_string("false"));
json_array_append_new(jsonList, jsonNode);
}
return jsonList;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
ListNode *head = createList(arr, 5);
json_t *jsonList = listToJson(head);
char *jsonStr = json_dumps(jsonList, JSON_INDENT(4));
printf("%s\n", jsonStr);
free(jsonStr);
json_decref(jsonList);
return 0;
}

上述代碼演示了如何將一個鏈表轉換為JSON格式。首先定義了一個節點結構體,然后使用createList函數創建一個由數組構成的鏈表。接著,編寫了一個listToJson函數,將鏈表轉換為JSON格式的函數。這個函數遍歷鏈表,在每個節點處創建一個JSON對象,并將該節點的數據和是否有下一個節點存儲到該對象中。最后,將所有節點的JSON對象存儲到一個JSON數組中,并返回該數組。

在主函數中,首先創建了一個鏈表,然后使用listToJson函數將它轉換為JSON格式,最后使用json_dumps函數將JSON數組轉換為JSON字符串,并打印輸出。最后,釋放內存并退出程序。