在 Web 开发中,使用 JSON 作为数据格式已经越来越普遍,而 C 语言也并不例外。为了让 C 程序能够进行 GET 请求并获取 JSON 数据,我们需要使用一些第三方库来帮助我们实现这个功能。
其中,我们推荐使用 cURL 和 cJSON 这两个库。cURL 是一个非常常用的网络传输库,可以方便地进行 HTTP 请求,而 cJSON 则是一个轻量级的 JSON 解析库,可以帮助我们从 JSON 数据中获取值。
首先,我们需要确保已经安装了这两个库。如果没有,可以通过以下命令安装:
sudo apt-get install libcurl4-openssl-dev sudo apt-get install libcjson-dev
接下来,我们可以使用以下代码来发送 GET 请求并获取 JSON 数据:
#include <stdio.h> #include <curl/curl.h> #include <cjson/cJSON.h> int main() { // 初始化 curl 和 cJSON curl_global_init(CURL_GLOBAL_ALL); cJSON *root = NULL; // 创建 curl 句柄 CURL *curl = curl_easy_init(); if (curl) { // 设置 curl 的 URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/data.json"); // 设置 curl 的回调函数 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &root); // 发送 GET 请求 CURLcode res = curl_easy_perform(curl); if (res == CURLE_OK) { // 解析 JSON 数据 root = cJSON_Parse(root); cJSON* data = cJSON_GetObjectItemCaseSensitive(root, "data"); printf("data: %s", cJSON_Print(data)); } // 清理资源 curl_easy_cleanup(curl); cJSON_Delete(root); } // 清理 curl 和 cJSON curl_global_cleanup(); return 0; }
在以上代码中,我们首先初始化了 curl 和 cJSON。然后,创建了一个 curl 句柄,并设置了 URL 和回调函数。回调函数会传入接收到的数据和我们开始设置的 cJSON *root 指针,在回调函数中,我们可以将接收到的数据拼接到 root 中。请求完成后,我们通过 cJSON_Parse 解析数据,并获取其中的 data 字段。
最后,我们需要清理资源并退出程序。这样,我们就可以在 C 语言中轻松发送 GET 请求并获取 JSON 数据了。