淘先锋技术网

首页 1 2 3 4 5 6 7

在 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 数据了。