如何通过libcurl将JSON代码转换为C数据类型

时间:2019-05-29 20:34:47

标签: c json libcurl

我正在尝试创建一个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解析器提取所需的特定值。感谢您的提前帮助!

0 个答案:

没有答案