JSON是一種常見的數據格式,而在C語言中,我們通常需要將JSON字符串轉換為數組來處理數據。這里介紹一些實現方法。
首先,我們需要使用C語言中的json-c庫。這個庫提供了一些API可以幫助我們將JSON字符串解析成C語言中的數組。
#include <stdio.h> #include <json-c/json.h> int main() { const char *json_str = "{ \"name\": \"張三\", \"age\": 18, \"scores\": [85, 90, 95] }"; struct json_object *json_obj = json_tokener_parse(json_str); if (json_object_is_type(json_obj, json_type_object)) { struct json_object *scores_array_obj; if (json_object_object_get_ex(json_obj, "scores", &scores_array_obj)) { if (json_object_is_type(scores_array_obj, json_type_array)) { int array_len = json_object_array_length(scores_array_obj); printf("scores array length: %d\n", array_len); int scores[array_len]; for (int i = 0; i< array_len; i++) { scores[i] = json_object_get_int(json_object_array_get_idx(scores_array_obj, i)); printf("scores[%d]: %d\n", i, scores[i]); } } } } json_object_put(json_obj); return 0; }
這里,我們首先定義了一個JSON字符串,然后使用json_tokener_parse()函數將其轉換為一個json_object對象。接著,我們判斷這個對象是否為JSON對象,如果是,我們就從中取出scores數組。如果scores是一個JSON數組,我們就獲取它的長度,然后聲明一個同樣長度的整型數組scores。接下來使用json_object_array_get_idx()和json_object_get_int()函數獲取scores中的元素并存入scores數組中。
最后,我們需要使用json_object_put()函數釋放json_object對象占用的內存,避免造成內存泄漏。