C語言開發(fā)中,常常需要將一些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成JSON格式,特別是將C list轉(zhuǎn)換成JSON對象數(shù)組。下面我們來介紹如何將C list轉(zhuǎn)換成JSON對象數(shù)組。
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> #define LIST_SIZE 3 struct Node { int data; struct Node *next; }; void displayList(struct Node **head_ref) { struct Node *current = *head_ref; while (current != NULL) { printf("%d ", current->data); current = current->next; } printf("\n"); } struct Node *createNode(int data) { struct Node *newNode = (struct Node*) malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; } void insertNode(struct Node **head_ref, int data) { if (*head_ref == NULL) { *head_ref = createNode(data); return; } struct Node *last = *head_ref; while (last->next != NULL) { last = last->next; } last->next = createNode(data); } cJSON *listToJson(struct Node **head_ref) { if (*head_ref == NULL) { return NULL; } cJSON *root = cJSON_CreateArray(); struct Node *current = *head_ref; while (current != NULL) { cJSON *node = cJSON_CreateObject(); cJSON_AddNumberToObject(node, "data", current->data); cJSON_AddItemToArray(root, node); current = current->next; } return root; } int main(int argc, char *argv[]) { int i; struct Node *head = NULL; for (i = 1; i<= LIST_SIZE; i++) { insertNode(&head, i); } printf("List: "); displayList(&head); cJSON *json = listToJson(&head); char *jsonString = cJSON_Print(json); printf("JSON: %s\n", jsonString); free(jsonString); cJSON_Delete(json); return 0; }
以上代碼實(shí)現(xiàn)了將C list轉(zhuǎn)換成JSON對象數(shù)組的功能。首先定義了一個(gè)結(jié)構(gòu)體Node表示鏈表節(jié)點(diǎn)。然后定義了相關(guān)函數(shù)用于鏈表的創(chuàng)建、插入和遍歷等操作。最重要的是listToJson函數(shù),該函數(shù)將鏈表轉(zhuǎn)換成JSON對象數(shù)組。其中,cJSON_CreateArray用于創(chuàng)建JSON數(shù)組,cJSON_CreateObject用于創(chuàng)建JSON對象,cJSON_AddNumberToObject用于添加數(shù)字類型的鍵值對。
最后,在main函數(shù)中創(chuàng)建了一個(gè)大小為3的鏈表,并調(diào)用listToJson函數(shù)將其轉(zhuǎn)換成JSON對象數(shù)組。然后使用cJSON_Print函數(shù)將JSON對象數(shù)組轉(zhuǎn)換成JSON字符串,并打印輸出。
上一篇python 解析b站
下一篇python 文本框操作