在C語(yǔ)言中解析JSON中的數(shù)組需要依賴第三方庫(kù)。JSON-C是一款輕量級(jí)的C語(yǔ)言JSON解析器,具有解析JSON對(duì)象和數(shù)組的能力,且使用簡(jiǎn)單方便。
在使用JSON-C解析JSON數(shù)組時(shí),我們首先需要解析JSON字符串為JSON對(duì)象,然后再?gòu)腏SON對(duì)象中獲取數(shù)組。下面是一個(gè)示例JSON字符串:
{ "name": "張三", "hobbies": [ "籃球", "游泳", "旅游" ] }
我們可以使用JSON-C的json_object_get_array函數(shù)來(lái)獲取"hobbies"字段的值,該函數(shù)的參數(shù)是一個(gè)JSON對(duì)象和一個(gè)鍵名:
json_object *jobj = json_tokener_parse(json_string); // 將JSON字符串解析為JSON對(duì)象 json_object *hobbies = json_object_object_get(jobj, "hobbies"); // 獲取"hobbies"字段的值 if (json_object_is_type(hobbies, json_type_array)) { // 判斷值是否為數(shù)組類型 int array_len = json_object_array_length(hobbies); // 獲取數(shù)組長(zhǎng)度 for (int i = 0; i< array_len; i++) { json_object *hobby = json_object_array_get_idx(hobbies, i); // 獲取數(shù)組元素 const char *hobby_str = json_object_get_string(hobby); // 將元素轉(zhuǎn)為字符串類型 printf("hobby %d: %s\n", i, hobby_str); // 打印結(jié)果 } }
上述代碼中,我們首先將JSON字符串解析為JSON對(duì)象,然后從JSON對(duì)象中獲取"hobbies"字段的值。判斷該值是否為數(shù)組類型后,遍歷數(shù)組并獲取其中的元素,最后將元素轉(zhuǎn)為字符串類型并打印出來(lái)。
總之,使用JSON-C解析JSON數(shù)組相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,只需要理解其API即可實(shí)現(xiàn)操作。