在前端開發中,經常需要從服務器獲取數據,而 JSON 數據格式已經成為了互聯網數據交換的標準。本文會介紹如何使用 C 語言從服務器請求 JSON 數據。
首先,需要使用一個開源的 C 語言庫來處理 JSON 數據。常用的庫有 cJSON 和 jansson。這里我們選用 cJSON 庫,它的使用非常簡單。
// 引入 cJSON 庫
#include <cJSON.h>
// 定義用于保存請求得到的 JSON 數據的字符串
char* raw_json_data;
// 使用 curl 庫發送請求,得到服務器返回的 JSON 數據字符串
// 這里我們使用 GET 請求示例,請求百度翻譯 API 的翻譯結果
curl_global_init(CURL_GLOBAL_DEFAULT);
CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://api.fanyi.baidu.com/api/trans/vip/translate?from=en&to=zh&q=apple&appid=your_app_id&salt=1435660288&sign=your_sign");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &raw_json_data);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
// 把 JSON 字符串解析為 cJSON 結構
cJSON* root = cJSON_Parse(raw_json_data);
// 從 cJSON 結構中取出數據,數據類型和名稱需要與服務器返回的 JSON 數據對應
cJSON* trans_result = cJSON_GetObjectItem(root, "trans_result");
for (int i = 0; i < cJSON_GetArraySize(trans_result); i++) {
cJSON* item = cJSON_GetArrayItem(trans_result, i);
char* dst = cJSON_GetObjectItem(item, "dst")->valuestring;
printf("翻譯結果:<%s>\n", dst);
}
// 釋放 cJSON 結構占用的內存
cJSON_Delete(root);
// 釋放 raw_json_data 占用的內存
if (raw_json_data) {
free(raw_json_data);
}
上面的代碼示例中,我們通過 curl 庫發送了一個 GET 請求,調用了百度翻譯 API,得到了翻譯結果的 JSON 數據。然后我們使用 cJSON 庫解析了這個 JSON 數據,并從中取出了翻譯結果。其中使用了 cJSON_Parse、cJSON_GetObjectItem、cJSON_GetArraySize、cJSON_GetArrayItem、cJSON_GetObjectItem 幾個常用的 cJSON 函數。
以上就是如何在 C 語言中請求 JSON 數據的方法。希望對你有幫助!
上一篇vue2 events
下一篇vue2 cokie