C語言中有許多處理JSON數據的工具,但是有一個非常常見的操作是將JSON數據轉換為List對象,以便更方便地對數據進行操作和處理。下面我們來看一看如何實現這個功能。
#include <stdio.h> #include <stdlib.h> #include <cjose/cjose.h> #include <jansson.h> int main() { char *json_string = "{\"list\":[\"a\",\"b\",\"c\"]}"; json_error_t error; json_t *root = json_loads(json_string, 0, &error); if (!json_is_object(root)) { fprintf(stderr, "error: root is not an object\n"); return 1; } json_t *list = json_object_get(root, "list"); if (!json_is_array(list)) { fprintf(stderr, "error: list is not an array\n"); return 1; } size_t size = json_array_size(list); printf("List size: %lu\n", size); for (size_t i = 0; i< size; i++) { json_t *item = json_array_get(list, i); if (json_is_string(item)) { printf("Item %lu: %s\n", i, json_string_value(item)); } } json_decref(root); return 0; }
在以上代碼中,我們先定義了一個JSON字符串,并使用json_loads函數將其轉換為一個JSON對象。然后我們檢查返回的對象是否為一個JSON對象,如果不是,則出現錯誤。接著,我們使用json_object_get函數從JSON對象中獲取名為“l(fā)ist”的JSON數組。同樣,我們也檢查了這個數組是否真的是一個JSON數組。最后,我們使用json_array_size函數獲取數組長度,并使用json_array_get函數和一個循環(huán)遍歷了整個數組,依次處理每一個元素。