在進行程序開發時,我們經常需要獲取由JSON格式呈現的數據。而使用C語言來獲取這些數據,我們可以利用C request這個API來實現。下面是一份使用C request獲取JSON數據的代碼示例:
#include#include #include size_t callbackFunction(void *ptr, size_t size, size_t memory, void *stream) { return fwrite(ptr, size, memory, (FILE*)stream); } int main(int argc, char *argv[]) { CURL *curl; CURLcode res; FILE *output_file; struct json_object *parsed_json; struct json_object *name; struct json_object *age; char *name_string; int age_int; curl = curl_easy_init(); if(curl) { printf("Initiating CURL connection...\n"); curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/data.json"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); output_file = fopen("data.json", "wb"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callbackFunction); curl_easy_setopt(curl, CURLOPT_WRITEDATA, output_file); res = curl_easy_perform(curl); curl_easy_cleanup(curl); fclose(output_file); printf("CURL connection closed.\n"); printf("Parsing JSON data...\n"); parsed_json = json_object_from_file("data.json"); json_object_object_get_ex(parsed_json, "name", &name); json_object_object_get_ex(parsed_json, "age", &age); name_string = json_object_get_string(name); age_int = json_object_get_int(age); printf("Name: %s\nAge: %d\n", name_string, age_int); json_object_put(parsed_json); printf("JSON data parsing complete.\n"); return 0; } return 1; }
上述代碼首先初始化一個CURL連接,接著使用curl_easy_setopt函數設置CURL連接中的參數,其中CURLOPT_URL參數為我們需要訪問獲取JSON數據的URL地址,CURLOPT_FOLLOWLOCATION參數用于告訴CURL讓其自動跟蹤重定向鏈接,CURLOPT_WRITEFUNCTION參數用于指定回調函數以將請求獲取的數據寫入本地的文件中。
隨著CURL連接完成之后,我們通過使用json-c這個C語言的JSON處理庫來對獲取的JSON數據進行解析。其中json_object_from_file函數用于從本地文件中讀取JSON對象,而json_object_object_get_ex函數用于從JSON對象中獲取特定的值,并將其存儲在各自對應的變量中。
在獲取和解析完JSON數據后,我們就可以直接使用以上代碼中所定義的變量,來訪問JSON數據并將其作為程序的輸入進一步進行處理。