在C語言中,我們經常需要將文件下載到本地,同時返回JSON格式的數據,本文將介紹如何在C語言中返回JSON格式的數據并下載文件。
我們可以使用libcurl庫來下載文件,并使用cJSON庫來構建JSON格式的數據。以下是代碼示例:
#include#include #include "cJSON.h" // 下載文件的回調函數 size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { FILE *fp = (FILE *) userdata; size_t written = fwrite(ptr, size, nmemb, fp); return written; } int main(void) { CURL *curl; CURLcode res; FILE *fp; cJSON *json; // 初始化cURL庫 curl_global_init(CURL_GLOBAL_DEFAULT); // 創建cURL句柄 curl = curl_easy_init(); // 打開要下載的文件 fp = fopen("file.jpg", "wb"); // 設置要下載的URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/file.jpg"); // 設置回調函數 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // 下載文件 res = curl_easy_perform(curl); // 關閉文件 fclose(fp); // 構建JSON格式的數據 json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "message", "success"); cJSON_AddStringToObject(json, "file_name", "file.jpg"); // 輸出JSON格式的數據 printf("%s\n", cJSON_Print(json)); // 釋放JSON對象 cJSON_Delete(json); // 清理cURL句柄 curl_easy_cleanup(curl); // 清理cURL庫 curl_global_cleanup(); return 0; }
以上代碼中,我們首先使用curl_global_init()函數初始化libcurl庫,然后使用curl_easy_init()函數創建cURL句柄。接下來,我們打開要下載的文件,設置要下載的URL,并設置回調函數。最后,我們調用curl_easy_perform()函數來執行下載操作,并在下載完成后關閉文件。
在下載文件的同時,我們使用cJSON庫來構建JSON格式的數據。在本例中,我們創建了一個包含"message"和"file_name"字段的JSON對象,并使用cJSON_AddStringToObject()函數添加數據。最后,我們輸出JSON格式的數據并釋放JSON對象。
通過以上代碼,我們可以在C語言中實現返回JSON格式的數據并下載文件的功能。
上一篇c 返回json值
下一篇vue 項目如何發布