在C語言中,訪問網站獲取Json數(shù)據是我們常常需要用到的一項技術。下面就讓我們來了解一下如何使用C語言完成這個任務。
//加載必要的庫,這里我們使用了curl庫 #include <stdio.h> #include <curl/curl.h> //定義存儲Json數(shù)據的字符串 static char *json; //定義一個回調函數(shù),用于處理獲取到的數(shù)據 static int writer(char *data, size_t size, size_t nmemb, char *writerData) { int dataSize = size * nmemb; if (dataSize< 1) { return 0; } int len = strlen(json) + dataSize + 1; json = (char*)realloc(json, len); if (json == NULL) { fprintf(stderr, "malloc() failed\n"); return 0; } strncat(json, data, dataSize); return dataSize; } int main() { //初始化curl庫 curl_global_init(CURL_GLOBAL_DEFAULT); //使用curl_easy_init函數(shù)創(chuàng)建一個curl對象 CURL *curl = curl_easy_init(); //設置curl對象的訪問地址 curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/jsondata"); //設置curl對象的回調函數(shù) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); //執(zhí)行curl請求 CURLcode responseCode = curl_easy_perform(curl); //處理請求結果 if (responseCode != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(responseCode)); } else { printf("%s\n", json); } //釋放curl對象和json字符串 curl_easy_cleanup(curl); free(json); //清空curl庫的資源 curl_global_cleanup(); return 0; }
上面的代碼通過curl庫中的curl_easy_init函數(shù)創(chuàng)建了一個curl對象,并通過curl_easy_setopt函數(shù)設置了訪問的網址和回調函數(shù)。在回調函數(shù)中,我們可以使用strncat函數(shù)將獲取到的數(shù)據添加到json字符串中。最后,使用curl_easy_cleanup函數(shù)釋放curl對象和json字符串,清空curl庫的資源。