在現代的互聯網應用中,前后端分離已經成為了一個非常普遍的模式。這種模式中,前端通過 HTTP 協議向后端發送請求,后端處理請求,返回數據給前端。而后端通常會提供一些 API 接口,用于返回特定格式的數據給前端。其中一種常見的格式就是 JSON 格式。
在 C 語言中,我們也可以通過調用 API 接口來獲取 JSON 數據。下面我們來看一下具體的實現:
#include#include #include size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { size_t total = size * nmemb; char *result = (char *)userdata; strncat(result, ptr, total); return total; } int main(void) { CURL *curl; CURLcode res; char url[] = "http://example.com/api"; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); char data[1000]; data[0] = '\0'; curl_easy_setopt(curl, CURLOPT_WRITEDATA, data); res = curl_easy_perform(curl); if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { printf("%s\n", data); struct json_object *parsed = json_tokener_parse(data); json_object_object_foreach(parsed, key, val) { printf("%s: %s\n", key, json_object_to_json_string(val)); } json_object_put(parsed); } curl_easy_cleanup(curl); } return 0; }
以上代碼使用了 curl 庫和 json-c 庫來獲取和解析 JSON 數據。其中,curl 庫用于發送 HTTP 請求,json-c 庫用于解析 JSON 數據。代碼首先定義一個回調函數,用于接收 HTTP 請求返回的數據。然后,通過 curl_easy_setopt 函數設置一些選項,例如請求的 URL,回調函數,以及接收數據的緩存。最后,通過 curl_easy_perform 函數執行 HTTP 請求。
當成功收到 HTTP 返回數據后,代碼將先輸出收到的 JSON 數據,然后解析 JSON 數據,輸出每一個鍵值對的值。json_tokener_parse 函數用于解析 JSON 數據,而 json_object_to_json_string 函數用于將解析出來的值轉化為字符串。
以上就是一個簡單的 C 語言調用返回 JSON 的 API 接口的例子。