前言:
在現(xiàn)在的 Web 開(kāi)發(fā)中,有許多時(shí)候需要從服務(wù)器獲取 JSON 數(shù)據(jù)用于渲染網(wǎng)頁(yè)。在這篇文章中,我們將介紹如何使用 C 語(yǔ)言來(lái)獲取 JSON 返回?cái)?shù)據(jù)。
步驟:
首先,請(qǐng)確保已安裝所需的 C 庫(kù)。我們將使用 libcurl 和 cJSON 庫(kù)。如果您尚未安裝,可以使用以下命令進(jìn)行安裝。
sudo apt-get install libcurl4-openssl-dev sudo apt-get install libcjson-dev
接下來(lái),請(qǐng)參照以下代碼示例。
#include#include #include #include size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream) { // 接收返回?cái)?shù)據(jù)的回調(diào)函數(shù) return fwrite(ptr, size, nmemb, (FILE *)stream); } char *download(char *url) { // 函數(shù)返回 JSON 字符串 CURL *curl; FILE *fp; char *output_file = "output.txt"; char *content; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { fp = fopen(output_file, "wb"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(fp); fp = fopen(output_file, "rb"); fseek(fp, 0, SEEK_END); long fsize = ftell(fp); fseek(fp, 0, SEEK_SET); content = malloc(fsize + 1); fread(content, 1, fsize, fp); fclose(fp); content[fsize] = '\0'; } curl_global_cleanup(); remove(output_file); return content; } int main() { char *url = "https://api.example.com/get_data"; char *json_data = download(url); cJSON *json = cJSON_Parse(json_data); // 在此處處理 JSON 數(shù)據(jù) free(json_data); cJSON_Delete(json); return 0; }
這段代碼通過(guò)使用 libcurl 拉取數(shù)據(jù),并在下載完成后使用 cJSON 解析 JSON 數(shù)據(jù)。您可以通過(guò)更改函數(shù)write_callback
和文件名output_file
來(lái)自定義回調(diào)函數(shù)和返回?cái)?shù)據(jù)存儲(chǔ)文件。
結(jié)論:
通過(guò)使用 libcurl 和 cJSON,我們可以使用 C 語(yǔ)言輕松獲取 JSON 返回?cái)?shù)據(jù)并實(shí)現(xiàn)自定義處理。希望這篇文章可以幫助您了解如何使用 C 語(yǔ)言處理 JSON 數(shù)據(jù)。