在C語言中,post json數據是非常常見的操作。下面我們來看看如何使用C語言進行post json數據的操作。
#include#include #include int main(void) { CURL *curl; CURLcode res; struct curl_slist *headers = NULL; struct json_object *data; char *json; curl = curl_easy_init(); if(curl) { const char *url = "http://example.com/api"; data = json_object_new_object(); json_object_object_add(data, "name", json_object_new_string("Alice")); json_object_object_add(data, "age", json_object_new_int(22)); json_object_object_add(data, "city", json_object_new_string("Shanghai")); json = json_object_to_json_string(data); headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); res = curl_easy_perform(curl); if(res != CURLE_OK) { printf("curl error: %s", curl_easy_strerror(res)); } curl_easy_cleanup(curl); json_object_put(data); } return 0; }
以上是一個簡單的post json數據的例子,其中我們使用了libcurl庫來進行網絡請求,使用了json-c庫來進行json的解析和轉換操作。
我們通過創建一個CURL對象,設置請求的URL、請求的body和請求頭,并調用curl_easy_perform函數來實現post json數據。在代碼中,我們使用了json_object_new_object函數來創建一個json對象,并使用json_object_object_add函數向json對象中添加key-value鍵值對;使用了json_object_to_json_string函數將json對象轉換為json字符串。
最后,我們執行完post請求后,需要對curl和json對象進行清理,避免內存泄漏。