JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,在 Web 開發(fā)中比較常用。在我們的開發(fā)中,有時(shí)需要實(shí)現(xiàn)將數(shù)據(jù)以 JSON 格式上傳至服務(wù)器的功能,這時(shí)就需要借助 C 語言中的相應(yīng)庫來實(shí)現(xiàn)。
在 C 語言中,常用的 JSON 庫有 cjson、jansson 等。這里以 cjson 為例,介紹一下如何實(shí)現(xiàn) JSON 的上傳。
// 構(gòu)造 JSON 對(duì)象 cJSON *root = cJSON_CreateObject(); // 創(chuàng)建 JSON 對(duì)象 cJSON_AddStringToObject(root, "name", "張三"); // 添加 string 值 cJSON_AddNumberToObject(root, "age", 18); // 添加 number 值 char *json_str = cJSON_PrintUnformatted(root); // 將 JSON 對(duì)象轉(zhuǎn)為字符串 // 上傳 JSON 字符串 CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { struct curl_slist *header_list = NULL; header_list = curl_slist_append(header_list, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/api/upload"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_str); res = curl_easy_perform(curl); curl_slist_free_all(header_list); curl_easy_cleanup(curl); } // 釋放資源 cJSON_Delete(root); free(json_str);
在上述代碼中,首先構(gòu)造了一個(gè) JSON 對(duì)象,添加了兩個(gè)鍵值對(duì)。然后將該 JSON 對(duì)象轉(zhuǎn)為字符串,準(zhǔn)備上傳。然后使用 libcurl 庫進(jìn)行網(wǎng)絡(luò)傳輸。設(shè)置請(qǐng)求頭為 "Content-Type: application/json",請(qǐng)求方式為 POST,并將數(shù)據(jù)添加到請(qǐng)求體中。最后執(zhí)行上傳操作,完成數(shù)據(jù)的上傳和處理。
以上就是使用 cjson 庫實(shí)現(xiàn)將 JSON 數(shù)據(jù)上傳至服務(wù)器的方法。在實(shí)際開發(fā)中,需要根據(jù)實(shí)際需求進(jìn)行修改和調(diào)整。