我正在尝试创建一个C程序,该程序从Schiphol API中获取JSON数据,并将JSON数据放入字符串或其他数据类型中。这时,我得到一些关于我通过libcurl发送的HTTP GET请求的统计信息以及整个JSON代码字符串。但是我无法将其归为一个变量。
我尝试遵循以下示例: https://curl.haxx.se/libcurl/c/getinmemory.html
但是,我的一些JSON代码在转换时被破坏了。
这是我现在正在使用的代码:
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
struct curl_slist *chunk = NULL;
/* Add some custom headers */
chunk = curl_slist_append(chunk, "Accept: application/json");
chunk = curl_slist_append(chunk, "app_id: ------");
chunk = curl_slist_append(chunk, "app_key: ------");
chunk = curl_slist_append(chunk, "ResourceVersion: v4");
/* set our custom set of headers */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
/* Set the url */
curl_easy_setopt(curl, CURLOPT_URL, "https://api.schiphol.nl/public-flights/flights?includedelays=false&page=0&sort=%2BscheduleTime");
/* tell libcurl some extra stuff*/
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
由于输出很大,因此我在这里列出了它: https://pastebin.com/0jMb6LRp
其中,我只希望将JSON部分转换为变量,以便可以使用jsmn JSON解析器提取所需的特定值。感谢您的提前帮助!