欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c調用接口怎樣取返回json數據類型

傅智翔2年前8瀏覽0評論

在進行Web開發(fā)中,常常需要使用C程序調用接口以獲取數據。當接口返回的數據類型是JSON時,如何提取數據呢?

/* 使用C語言進行HTTP GET請求,并獲取返回的JSON數據類型 */
#include<stdio.h>
#include<stdlib.h>
#include<curl/curl.h>
#include<jansson.h>
size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream) {
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
int main() {
// 初始化CURL
CURL *curl = curl_easy_init();
if(!curl) {
fprintf(stderr, "Couldn't init curl.");
return -1;
}
// 設置請求的URL
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/api/data.json");
// 添加header
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// 設置回調函數
FILE *fp = fopen("data.json", "wb");
if(!fp) {
fprintf(stderr, "Couldn't open file.");
curl_easy_cleanup(curl);
return -1;
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
// 發(fā)送請求
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);
fclose(fp);
return -1;
}
// 關閉文件
fclose(fp);
// 讀取JSON數據
json_t *root;
json_error_t error;
root = json_load_file("data.json", 0, &error);
if(!root) {
fprintf(stderr, "json_load_file() failed: %s\n", error.text);
return -1;
}
// 從JSON數據中提取信息
json_t *data = json_object_get(root, "data");
json_t *array = json_object_get(data, "array");
for(int i = 0; i< json_array_size(array); i++) {
json_t *item = json_array_get(array, i);
char *name = json_string_value(json_object_get(item, "name"));
int age = json_integer_value(json_object_get(item, "age"));
printf("Name: %s, Age: %d\n", name, age);
}
// 釋放資源
json_decref(root);
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
return 0;
}

以上代碼實現了一個HTTP GET請求返回JSON類型數據的例子。我們使用CURL庫來發(fā)送HTTP請求,并將返回的JSON數據保存到文件中。之后,我們使用jansson庫來讀取JSON數據并提取所需的信息。最后,我們釋放所有資源。