Я пытаюсь создать программу на C, которая получает данные JSON из API Schiphol и помещает данные JSON в строку или другой тип данных. В этот момент я получаю статистику HTTP-запроса GET, который я посылаю через libcurl вместе со всей строкой кода 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, чтобы я мог использовать анализатор JSON jsmn для извлечения конкретных значений, которые мне нужны. Заранее спасибо за помощь!