C語言是一種廣泛應(yīng)用于系統(tǒng)級編程的高級編程語言,當(dāng)我們需要處理JSON數(shù)據(jù)時,很多時候需要將其轉(zhuǎn)換為數(shù)組以便進行進一步的處理。下面介紹一下如何在C語言中將JSON字符串轉(zhuǎn)換為數(shù)組。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { char *json_str = "{\"name\":\"張三\",\"age\":18,\"score\":[90,85,95]}"; json_error_t error; json_t *root = json_loads(json_str, JSON_DECODE_ANY, &error); if (!root) { fprintf(stderr, "json error on line %d: %s\n", error.line, error.text); return 1; } json_t *score = json_object_get(root, "score"); int size = json_array_size(score); int *arr = (int *)malloc(size * sizeof(int)); for (int i = 0; i < size; i++) { json_t *item = json_array_get(score, i); arr[i] = json_integer_value(item); } for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } free(arr); json_decref(root); return 0; }
以上代碼使用了jansson庫,該庫是一個輕量級的C語言JSON庫,可以用來解析、構(gòu)建和操作JSON數(shù)據(jù)。代碼中首先創(chuàng)建了一個JSON字符串,然后使用json_loads函數(shù)將其轉(zhuǎn)換為json_t對象。接著通過json_object_get函數(shù)獲取到要轉(zhuǎn)換為數(shù)組的json_t對象,然后通過json_array_size獲取該數(shù)組的大小,并根據(jù)其大小動態(tài)分配內(nèi)存,將值保存到數(shù)組中,最后通過循環(huán)輸出數(shù)組中的所有值。