在 C 語言中訪問網(wǎng)頁獲取 JSON 數(shù)據(jù),通常需要使用一些第三方庫。其中,比較常用的就是 cURL 和 libjson-c。
首先,需要使用 cURL 庫來向網(wǎng)頁發(fā)起 HTTP 請求,并獲取返回的數(shù)據(jù)。以下是一個簡單的例子:
#include#include int main(void) { CURL *curl; CURLcode res; char *url = "http://example.com/json-data"; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); } return 0; }
上面的代碼中,首先需要初始化 cURL 實例,然后使用 curl_easy_setopt() 函數(shù)設(shè)置 URL,最后使用 curl_easy_perform() 函數(shù)發(fā)送請求和接收數(shù)據(jù)。注意,這只是一個簡單的例子,實際中可能還需要設(shè)置其他參數(shù),如請求頭部、超時時間等。
接下來,需要使用 libjson-c 庫來解析返回的 JSON 數(shù)據(jù)。以下是一個簡單的例子:
#include#include #include int main(void) { CURL *curl; CURLcode res; char *url = "http://example.com/json-data"; char buffer[4096]; struct json_object *json; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); res = curl_easy_perform(curl); if(res == CURLE_OK) { json = json_tokener_parse(buffer); printf("%s\n", json_object_to_json_string(json)); json_object_put(json); } curl_easy_cleanup(curl); } return 0; }
上面的代碼中,首先定義一個緩沖區(qū),用于存儲獲取到的 JSON 數(shù)據(jù)。然后,使用 json_tokener_parse() 函數(shù)將緩沖區(qū)中的數(shù)據(jù)解析成 JSON 對象。接著,使用 json_object_to_json_string() 函數(shù)將 JSON 對象轉(zhuǎn)換成字符串,并打印輸出。最后,使用 json_object_put() 函數(shù)釋放內(nèi)存。
當(dāng)然,上面的例子僅供參考,實際中可能還需要對解析得到的 JSON 對象進(jìn)行類型判斷、遍歷等操作。