在使用c語言開發(fā)中,有時需要讀取json數組,并將其轉換成list。下面我們將詳細介紹如何實現。
#include <stdio.h> #include <jansson.h> #include <stdbool.h> #include <malloc.h> typedef struct List { int val; struct List *next; } List; List* append(List *head, int val) { List *node = (List*)malloc(sizeof(List)); node->val = val; node->next = NULL; if (head == NULL) { head = node; } else { List *p = head; while (p->next != NULL) { p = p->next; } p->next = node; } return head; } List* json_to_list(json_t *json_arr) { List *head = NULL; size_t size = json_array_size(json_arr); for (size_t i = 0; i< size; i++) { json_t *json_val = json_array_get(json_arr, i); int val = json_integer_value(json_val); head = append(head, val); } return head; } int main() { char *json_str = "[1,2,3,4,5,6]"; json_t *json_root; json_error_t error; json_root = json_loads(json_str, 0, &error); if (json_root != NULL && json_is_array(json_root)) { List *list = json_to_list(json_root); printf("list: "); List *p = list; while (p != NULL) { printf("%d ", p->val); p = p->next; } printf("\n"); } else { printf("%d %s\n", error.line, error.text); } return 0; }
以上代碼通過解析json字符串,將其中的數組元素逐一添加到list中,并輸出結果。