C語言中使用JSON進行數據傳輸的應用愈發廣泛,本文將介紹一個利用C語言中的JSON庫進行發送和接收數據的例子。
首先是發送數據的部分,我們使用libcurl庫進行HTTP請求并將JSON數據作為POST參數發送給服務器。這里可以使用CJSON庫生成JSON數據,也可以手寫一個JSON字符串。具體代碼如下:
CURL *curl; CURLcode res; char* url = "http://localhost:8080/receive_data"; struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); char json_str[1024]; CJSON *json = CJSON_CreateObject(); CJSON_AddItemToObject(json, "name", CJSON_CreateString("John")); CJSON_AddItemToObject(json, "age", CJSON_CreateNumber(35)); CJSON_AddItemToObject(json, "gender", CJSON_CreateString("male")); CJSON_PrintPreallocated(json, json_str, 1024, 0); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } CJSON_Delete(json);
然后是接收數據的部分,我們可以使用libcurl庫從服務器獲取JSON數據,然后使用CJSON庫解析該JSON數據。具體代碼如下:
CURL *curl; CURLcode res; char* url = "http://localhost:8080/send_data"; long http_code; char *json_str; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &json_str); res = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); curl_easy_cleanup(curl); } if(http_code == 200) { CJSON *json = CJSON_Parse(json_str); char *name = CJSON_GetObjectItem(json, "name")->valuestring; int age = CJSON_GetObjectItem(json, "age")->valueint; char *gender = CJSON_GetObjectItem(json, "gender")->valuestring; printf("%s %d %s\n", name, age, gender); CJSON_Delete(json); } free(json_str);
在代碼中,write_callback函數是libcurl庫的回調函數,用于處理服務器返回的數據。最后記得釋放相關內存,避免內存泄露。
上一篇c json去除中間空格
下一篇html循環代碼手機