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

c 獲取web json

洪振霞1年前10瀏覽0評論

在進(jìn)行Web開發(fā)中很常遇到需要獲取JSON數(shù)據(jù)的情況,而C語言也提供了獲取JSON數(shù)據(jù)的方法。以下是一個(gè)簡單的C語言獲取Web JSON數(shù)據(jù)的示例。

#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <cjson/cJSON.h>
int main(void)
{
CURL *curl;
CURLcode res;
char *data;
cJSON *root, *item;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "http://api.site.com/data.json");
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);
return 1;
}
data = curl_easy_escape(curl, res, 0);
root = cJSON_Parse(data);
if(!root)
{
fprintf(stderr, "Error before: [%s]\n", cJSON_GetErrorPtr());
curl_easy_cleanup(curl);
return 1;
}
item = cJSON_GetObjectItem(root, "data");
printf("%s\n", cJSON_Print(item));
cJSON_Delete(root);
curl_easy_cleanup(curl);
return 0;
}
}

上面的代碼使用了libcurl和cJSON這兩個(gè)庫。首先使用curl_easy_init()初始化了一個(gè)curl的對象。然后設(shè)置了CURL的屬性,即請求的URL地址。curl_easy_perform()進(jìn)行實(shí)際的URL請求,并返回狀態(tài)碼。如果狀態(tài)碼非正常,程序就會輸出錯(cuò)誤信息并結(jié)束。

如果請求成功,就會獲取到j(luò)son的字符串。調(diào)用cJSON_Parse()函數(shù)解析json數(shù)據(jù),并返回一個(gè)cJSON對象。如果解析失敗,函數(shù)返回NULL。程序在這里檢測解析結(jié)果是否有效,如果無效就輸出錯(cuò)誤信息并結(jié)束。

使用cJSON_GetObjectItem()獲取json中data的數(shù)據(jù)并打印出來。最后需要使用cJSON_Delete()釋放cJSON對象,并使用curl_easy_cleanup()關(guān)閉curl對象。