在Web開發中,常常需要使用Ajax技術獲取服務器返回的JSON數據,以便于對數據進行處理和展示。而使用C語言獲取Ajax JSON數據也是可行的。
實現步驟如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
static size_t write_callback_func(void *buffer, size_t size, size_t nmemb, void *userp) {
char **response_ptr = userp;
*response_ptr = realloc(*response_ptr, size * nmemb + 1);
if (*response_ptr == NULL) {
return 0;
}
memcpy(*response_ptr, buffer, size * nmemb);
(*response_ptr)[size * nmemb] = '\0';
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
char *response = NULL;
char url[] = "http://example.com/your_json_data";
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_func);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
res = curl_easy_perform(curl);
if (res == CURLE_OK) {
printf("%s\n", response);
}
curl_easy_cleanup(curl);
}
free(response);
curl_global_cleanup();
return 0;
}
以上代碼通過使用第三方庫LIBCURL來實現。程序中定義了一個寫回調函數用來處理數據流,并且通過設置CURLOPT_WRITEFUNCTION和CURLOPT_WRITEDATA選項將其與CURL相關聯。
在write_callback_func函數中,使用了realloc來重新分配內存,以存儲服務器返回的JSON數據字符串。存儲完畢后,將其作為C語言字符串打印出來。
事實上,只要在獲取JSON數據后,開發者可以根據自己的需要,使用JSON解析庫,對數據進行解析和操作。
上一篇vue 組件內循環