色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 調用api接口返回json數據庫

錢瀠龍2年前9瀏覽0評論

C語言作為一門強大的編程語言,也可以調用API接口并返回JSON數據庫數據。下面我們就來看一下如何實現。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<curl/curl.h>
#include<json/json.h>
#define API_URL "https://www.example-api.com/api/data.json"
size_t write_callback(char* buffer, size_t size, size_t nitems, void* userdata)
{
size_t real_size = size * nitems;
char** data = (char**)userdata;
char* ptr = realloc(*data, strlen(*data) + real_size + 1);
if (ptr == NULL)
{
fprintf(stderr, "realloc failed\n");
return 0;
}
*data = ptr;
memcpy(*data + strlen(*data), buffer, real_size);
(*data)[strlen(*data) + real_size] = '\0';
return real_size;
}
int main()
{
CURL* curl;
CURLcode res;
char* data = NULL;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, API_URL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_callback);
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
{
//使用Json-C庫解析JSON數據
json_object* jobj = json_tokener_parse(data);
printf("%s\n", json_object_to_json_string(jobj));
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}

在上面的代碼中,我們使用了libcURL庫去訪問API,并且用Json-C庫解析JSON數據。其中,write_callback函數負責將API返回的數據存入一個字符串中,用于后續的JSON解析。最后,我們將解析出來的JSON數據輸出。