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

c http獲取json

錢多多2年前8瀏覽0評論

隨著互聯網技術的發展,越來越多的數據以json格式呈現。在C語言中,我們可以通過http請求獲取json數據,進而對其進行處理。本文將介紹C語言中通過http獲取json數據的方法。

#include#includeint main(void)
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/json_data.json");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
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);
}
curl_global_cleanup();
return 0;
}
static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp)
{
size_t realsize = size * nmemb;
char *ptr = realloc(userp, size*nmemb+1);
if(!ptr) {
fprintf(stderr, "realloc() failed\n");
return 0;
}
userp = ptr;
memcpy(userp, contents, realsize);
((char*)userp)[realsize] = 0;
return realsize;
}

以上為curl獲取json數據的代碼。我們可以看到,在代碼中,使用curl庫進行http請求,其中curl_easy_setopt函數中,設置CURLOPT_URL為請求的url地址,CURLOPT_FOLLOWLOCATION為是否跟隨重定向,CURLOPT_WRITEFUNCTION為獲取數據后對數據處理的回調函數。

獲取到數據后,我們可以通過json-c庫進行解析。json-c是一個易于使用的json庫,提供了多種操作json數據的方法,例如解析、創建、刪除等。

#include#includeint main()
{
const char *json_str = "{\"name\":\"json-c\",\"year\": \"2019\"}";
struct json_object *jobj = json_tokener_parse(json_str);
printf("name=%s, year=%d\n",
json_object_get_string(json_object_object_get(jobj, "name")),
json_object_get_int(json_object_object_get(jobj, "year")));
json_object_put(jobj);
return 0;
}

以上為使用json-c庫解析json數據的代碼。我們可以看到,在代碼中,使用json_tokener_parse函數對json字符串進行解析,然后使用json_object_object_get函數獲取相應變量的值。