C 數(shù)據(jù)上傳 JSON 是現(xiàn)代編程語言中非常常見的一種數(shù)據(jù)格式轉換方式。在 C 語言中,我們可以通過一些庫或自行編寫代碼來將 C 數(shù)據(jù)轉換為 JSON 格式,并將其上傳到服務器中或用于其他用途。
下面是一個示例代碼,用于將 C 數(shù)據(jù)上傳至服務器中:
#include#include #include #include #include #define URL "http://example.com/upload" struct upload_data { char *data; size_t size; }; static size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) { struct upload_data *upload = (struct upload_data *)userp; upload->data = realloc(upload->data, upload->size + size * nmemb); memcpy(upload->data + upload->size, buffer, size * nmemb); upload->size += size * nmemb; return size * nmemb; } int main() { CURL *curl; CURLcode res; char *json_data; cJSON *root; struct upload_data upload = { NULL, 0 }; root = cJSON_CreateObject(); cJSON_AddNumberToObject(root, "id", 123); cJSON_AddStringToObject(root, "name", "John Doe"); json_data = cJSON_Print(root); curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, URL); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &upload); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } cJSON_Delete(root); free(json_data); free(upload.data); return 0; }
該代碼使用了 curl 和 cJSON 兩個庫,其中 curl 用于進行網(wǎng)絡請求,cJSON 用于將 C 數(shù)據(jù)轉換為 JSON 格式。
首先,在 main 函數(shù)中創(chuàng)建了一個 cJSON 對象,并添加了一些數(shù)據(jù)。接著,使用 cJSON_Print 函數(shù)將其轉換為 JSON 字符串。
然后,調(diào)用 curl_easy_init 函數(shù)初始化 CURL 對象,設置 URL、POST 參數(shù)、請求回調(diào)函數(shù)等,調(diào)用 curl_easy_perform 函數(shù)進行網(wǎng)絡請求。
最后,在程序結束前需要釋放 cJSON 對象、JSON 字符串、回調(diào)函數(shù)的上傳數(shù)據(jù)空間等。
上一篇c 操作json對象
下一篇python 生成年月份