C是一種強(qiáng)大且靈活的編程語言,常用于網(wǎng)絡(luò)通信開發(fā)。使用C請求URL獲取JSON數(shù)據(jù)是常見的需求,本文將介紹如何使用C請求URL獲取JSON數(shù)據(jù)。
#include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; char *data; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://api.example.com/json"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); else { curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &data); if(data) printf("Content-Type: %s\n", data); } curl_easy_cleanup(curl); } return 0; }
以上代碼是使用libcurl庫的示例。首先,需要使用curl_easy_init()初始化一個CURL指針,然后使用curl_easy_setopt()設(shè)置URL。接下來,使用curl_easy_perform()獲取JSON數(shù)據(jù)。如果返回值不是CURLE_OK,則輸出錯誤信息。如果成功獲取JSON數(shù)據(jù),則使用curl_easy_getinfo()獲取Content-Type。
獲取JSON數(shù)據(jù)后,可以使用json-c庫處理JSON數(shù)據(jù)。json-c是一個開源的JSON庫,可以方便地解析JSON數(shù)據(jù)。
#include <stdio.h> #include <curl/curl.h> #include <json-c/json.h> int main(void) { CURL *curl; CURLcode res; char *data; struct json_object *obj; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://api.example.com/json"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); else { curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &data); if(data) printf("Content-Type: %s\n", data); obj = json_tokener_parse(data); printf("Parsed JSON: %s\n", json_object_to_json_string(obj)); json_object_put(obj); } curl_easy_cleanup(curl); } return 0; }
以上代碼是使用json-c庫的示例。首先,需要使用json_tokener_parse()解析JSON數(shù)據(jù),然后使用json_object_to_json_string()將解析后的JSON對象轉(zhuǎn)換為字符串進(jìn)行輸出。
本文介紹了如何使用C請求URL獲取JSON數(shù)據(jù),并使用libcurl和json-c庫處理JSON數(shù)據(jù)。以上代碼僅是示例,請根據(jù)實(shí)際情況進(jìn)行調(diào)整。