C語言中有許多處理JSON數(shù)據(jù)的工具,但是有一個非常常見的操作是將JSON數(shù)據(jù)轉(zhuǎn)換為List對象,以便更方便地對數(shù)據(jù)進行操作和處理。下面我們來看一看如何實現(xiàn)這個功能。
#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函數(shù)將其轉(zhuǎn)換為一個JSON對象。然后我們檢查返回的對象是否為一個JSON對象,如果不是,則出現(xiàn)錯誤。接著,我們使用json_object_get函數(shù)從JSON對象中獲取名為“l(fā)ist”的JSON數(shù)組。同樣,我們也檢查了這個數(shù)組是否真的是一個JSON數(shù)組。最后,我們使用json_array_size函數(shù)獲取數(shù)組長度,并使用json_array_get函數(shù)和一個循環(huán)遍歷了整個數(shù)組,依次處理每一個元素。