C http 發(fā)送 JSON 數(shù)據(jù)格式
JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,十分適合在網(wǎng)絡(luò)傳輸中使用。在 C 語言中,我們可以通過使用第三方庫 cJSON 來處理 JSON 數(shù)據(jù)。
首先,我們需要?jiǎng)?chuàng)建一個(gè) JSON 對(duì)象:
#include <stdio.h>
#include <cJSON.h>
int main() {
cJSON *root = cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString("張三"));
cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(20));
cJSON_AddItemToObject(root, "sex", cJSON_CreateString("男"));
char *json_str = cJSON_Print(root);
printf("JSON 對(duì)象:\n%s\n", json_str);
return 0;
}
上面的代碼中,我們創(chuàng)建了一個(gè) JSON 對(duì)象,并且向其中添加了三個(gè)屬性:name、age 和 sex。最后,我們將這個(gè) JSON 對(duì)象打印出來,結(jié)果如下:
JSON 對(duì)象:
{
"name": "張三",
"age": 20,
"sex": "男"
}
接下來,我們需要將這個(gè) JSON 對(duì)象轉(zhuǎn)化為字符串,并通過 HTTP 協(xié)議發(fā)送出去。這里使用 cURL 庫來發(fā)送請(qǐng)求:
#include <stdio.h>
#include <cJSON.h>
#include <curl/curl.h>
int main() {
CURL *curl = curl_easy_init();
if (!curl) {
return 1;
}
cJSON *root = cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString("張三"));
cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(20));
cJSON_AddItemToObject(root, "sex", cJSON_CreateString("男"));
char *json_str = cJSON_Print(root);
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_str);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
return 0;
}
上面的代碼中,我們使用了 cURL 庫來發(fā)送 HTTP 請(qǐng)求,并將 JSON 對(duì)象作為請(qǐng)求的參數(shù)發(fā)送出去。其中,CURLOPT_POSTFIELDS 選項(xiàng)用于設(shè)置請(qǐng)求參數(shù),它的值為 JSON 字符串。
上述代碼中,我們只是簡單地發(fā)送了一個(gè) JSON 對(duì)象,實(shí)際中可能還需要對(duì)其進(jìn)行驗(yàn)證、加密等操作。但是,通過本文的介紹,相信讀者已經(jīng)了解了如何在 C 語言中發(fā)送 JSON 數(shù)據(jù)。