C語言中處理JSON數(shù)據(jù)的一種方式是將其轉(zhuǎn)換成數(shù)組,通過遍歷數(shù)組來訪問JSON數(shù)據(jù)的各個元素。下面介紹一種將JSON數(shù)據(jù)轉(zhuǎn)換為數(shù)組的方法。
#include <stdio.h> #include <jansson.h> void json_to_array(json_t *json, int *arr) { int i; json_t *value; json_array_foreach(json, i, value) { if(json_is_array(value)) { json_to_array(value, arr + i); } else if(json_is_integer(value)) { arr[i] = json_integer_value(value); } } } int main(int argc, char *argv[]) { char *json_str = "[[1, 2], [3, 4]]"; json_error_t error; json_t *json = json_loads(json_str, JSON_DECODE_ANY, &error); if(!json) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } int arr[4]; json_to_array(json, arr); int i; for(i=0; i<4; i++) { printf("%d ", arr[i]); } printf("\n"); json_decref(json); return 0; }
該代碼中,通過`json_loads()`函數(shù)將JSON字符串轉(zhuǎn)換成JSON對象,然后調(diào)用`json_to_array()`函數(shù)將JSON對象轉(zhuǎn)換成數(shù)組,最后輸出數(shù)組中的元素。`json_to_array()`函數(shù)通過遞歸地遍歷JSON數(shù)組,將其中的整數(shù)存儲到數(shù)組中。注意,該函數(shù)假設(shè)JSON數(shù)組的元素都是整數(shù)。