JSON是一種輕量級的數(shù)據(jù)交換格式,由于其簡單易懂、易于擴展等特點,使其在現(xiàn)代應(yīng)用程序中得到了廣泛應(yīng)用。C語言是一種高效、穩(wěn)定的編程語言,經(jīng)常用于底層開發(fā)以及嵌入式系統(tǒng)中。在C語言開發(fā)中,我們常常需要將JSON數(shù)據(jù)中的數(shù)組轉(zhuǎn)換為鏈表,以便對其進行操作。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct node { int value; struct node *next; } Node; int main() { char *json_str = "[1, 2, 3, 4, 5]"; json_t *root; json_error_t error; Node *head, *p, *q; int count = 0; // 解析JSON字符串 root = json_loads(json_str, 0, &error); if(!root) { printf("JSON解析失敗,錯誤信息:%s\n", error.text); return -1; } // 遍歷數(shù)組元素,將其轉(zhuǎn)換為鏈表 head = (Node*) malloc(sizeof(Node)); head->next = NULL; p = head; for(int i = 0; i< json_array_size(root); i++) { p->next = (Node*) malloc(sizeof(Node)); p = p->next; p->value = json_integer_value(json_array_get(root, i)); p->next = NULL; count++; } // 打印鏈表元素 q = head->next; while(q) { printf("%d ", q->value); q = q->next; } printf("\n鏈表長度:%d\n", count); // 釋放鏈表內(nèi)存 p = head->next; while(p) { q = p->next; free(p); p = q; } free(head); // 釋放JSON對象內(nèi)存 json_decref(root); return 0; }
上述代碼使用jansson庫解析JSON字符串,將其中的數(shù)組元素轉(zhuǎn)換為鏈表。在代碼中,我們遍歷數(shù)組中的元素,并將其插入到鏈表中。最后,我們輸出鏈表元素和長度,并釋放鏈表和JSON對象的內(nèi)存。