在C語言中,通過網絡請求讀取JSON數據是一項常見的任務。這通常涉及到與網絡通信相關的庫,例如libcurl和libevent等。以下是一個簡單的示例,展示如何使用libcurl庫從某個API讀取JSON數據。
#include#include #include "cJSON.h" size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { size_t realsize = size * nmemb; char *response = (char *)userdata; strncat(response, ptr, realsize); return realsize; } int main() { CURL *curl; CURLcode res; char *url = "https://some-api.com/my-data"; char response[4096] = { 0 }; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, response); res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { cJSON *json = cJSON_Parse(response); if (json) { printf("JSON data:\n%s\n", cJSON_Print(json)); cJSON_Delete(json); } else { printf("Failed to parse JSON data.\n"); } } curl_easy_cleanup(curl); } return 0; }
該示例代碼的核心是CURL library提供的curl_easy_setopt方法,可以將各種選項設置為CURL易于處理的值。在這個例子中,選項包括URL、回調函數、以及回調函數應該接收的數據等。callback函數將自動調用,在API響應的每個數據塊傳輸到本地緩存時調用,直到響應的所有數據傳輸完畢。
作為JSON處理器,我們使用了一個第三方庫cJSON來解析API響應。cJSON是一個小巧但功能強大的庫,提供了一些實用的方法來遍歷和訪問JSON數據對象。在本例中,我們使用cJSON_Parse方法將API響應轉換為cJSON對象,然后使用cJSON_Print方法將其打印出來。
總的來說,使用C語言進行網絡請求并讀取JSON數據是一項非常有用的技能。此示例代碼提供了一個簡單的框架來完成這項任務,并且可擴展性良好。
上一篇c 網頁 json數據
下一篇vue.js 開關