c语言curl获取json
时间: 2024-01-27 09:07:49 浏览: 188
PHP技巧PHPCURL函数库.doc
在 C 语言中,可以使用 libcurl 库来获取 JSON 数据。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <curl/curl.h>
int main() {
CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/data");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
return 0;
}
```
在这个示例中,我们使用了 libcurl 库的 curl_easy_init() 函数来初始化一个 CURL 对象,然后设置了一些选项,比如请求的 URL 地址和写入数据的回调函数。最后,使用 curl_easy_perform() 函数来执行请求并获取响应数据。
如果响应数据是 JSON 格式的,我们可以使用一些 JSON 库来解析它。比如 cJSON 库是一个轻量级的 JSON 解析库,可以在 C 语言中使用。下面是一个使用 cJSON 库解析 JSON 数据的示例代码:
```c
#include <stdio.h>
#include <curl/curl.h>
#include "cJSON.h"
int main() {
CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/data");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
CURLcode res = curl_easy_perform(curl);
if (res == CURLE_OK) {
cJSON* json = cJSON_Parse(curl_easy_strerror(res));
if (json != NULL) {
printf("JSON data: %s\n", cJSON_Print(json));
cJSON_Delete(json);
}
} else {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
return 0;
}
```
在这个示例中,我们使用了 cJSON 库的 cJSON_Parse() 函数来解析 JSON 数据,并使用 cJSON_Print() 函数将其打印到控制台上。注意,在 cJSON_Parse() 函数返回后,我们必须使用 cJSON_Delete() 函数来释放解析后的 JSON 对象。
阅读全文