C語(yǔ)言中有一個(gè)廣泛使用的庫(kù)——json-c,它提供了一大堆操作JSON格式數(shù)據(jù)的API。其中之一便是將JSON字符串轉(zhuǎn)換成數(shù)組。下面我們來(lái)學(xué)習(xí)一下如何使用json-c來(lái)實(shí)現(xiàn)這一功能。
// 引入json-c的頭文件 #include <json-c/json.h> // 假設(shè)以下是一個(gè)JSON字符串 char *str = "{ \"num\": 3, \"arr\": [1, 2, 3] }"; // 將JSON字符串解析為json_object類型 struct json_object *json = json_tokener_parse(str); // 獲取arr數(shù)組的長(zhǎng)度 int arr_len = json_object_array_length(json_object_object_get(json, "arr")); // 遍歷arr數(shù)組并輸出 for(int i = 0; i < arr_len; i++) { struct json_object *arr_item = json_object_array_get_idx(json_object_object_get(json, "arr"), i); printf("%d ", json_object_get_int(arr_item)); } // 記得釋放掉json對(duì)象 json_object_put(json);
解釋一下代碼中的幾個(gè)重點(diǎn):
- json_tokener_parse:將字符串解析為json_object對(duì)象
- json_object_object_get:獲取json對(duì)象中某個(gè)鍵對(duì)應(yīng)的值
- json_object_array_length/json_object_array_get_idx:獲取json數(shù)組的長(zhǎng)度,以及遍歷數(shù)組中的每個(gè)元素
- json_object_get_int:獲取json對(duì)象中的整型值
- json_object_put:釋放json_object對(duì)象
通過(guò)上面的例子,我們可以在C語(yǔ)言中很方便地完成JSON字符串到數(shù)組的轉(zhuǎn)換。需要注意的是,json-c庫(kù)支持的操作遠(yuǎn)不止如此,有興趣的讀者可以自行了解更多API。