C JSON Post 是一個將C語言與JSON數據結構相結合的編程模式,能夠將數據信息以JSON格式上傳至服務器。
// C語言代碼實現POST請求發送JSON數據 #include#include #include #include int main() { CURL *curl; CURLcode res; cJSON *root, *person, *name, *age; char *json_str, *read_buf; int read_buf_size = 2048; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { root = cJSON_CreateObject(); person = cJSON_CreateObject(); // 添加JSON數據信息 cJSON_AddItemToObject(root, "person", person); cJSON_AddStringToObject(person, "name", "Tom"); cJSON_AddNumberToObject(person, "age", 22); // 生成JSON字符串 json_str = cJSON_Print(root); cJSON_Delete(root); curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_str); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t) strlen(json_str)); read_buf = (char *) malloc(read_buf_size); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) read_buf); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); res = curl_easy_perform(curl); printf("POST result:\n%s\n", read_buf); free(json_str); free(read_buf); } curl_easy_cleanup(curl); curl_global_cleanup(); return 0; }
上面的代碼中,我們利用curl庫中的CURL_POST以及CURLOPT_POSTFIELDS屬性實現了向指定URL發送POST請求,并將JSON數據信息提交到服務器。我們使用cJSON庫生成JSON數據結構,最終生成JSON字符串,并將其作為POST請求參數提交。
如此,我們就可以在C語言中很方便地將JSON數據上傳至服務器,實現數據交互的同時使得代碼更加簡單易懂。