在Web開發中,經常需要通過請求接口獲取數據,而常用的接口格式之一就是JSON。那么,在C語言中如何請求接口并解析JSON呢?
首先,需要用到cURL庫來進行接口請求。cURL支持通過HTTP請求獲取數據,而且也支持HTTPS請求。以下是一個獲取JSON數據的示例:
#include#include int main(void) { CURL *curl; CURLcode res; char *url = "http://example.com/data.json"; // 請求地址 curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); // 設置請求地址 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // 跟隨重定向 res = curl_easy_perform(curl); // 執行請求 if(res == CURLE_OK) { printf("%s\n", curl_easy_strerror(res)); // 輸出請求結果 } curl_easy_cleanup(curl); // 清理curl } return 0; }
代碼中使用了curl_easy_init()函數初始化cURL庫,然后通過curl_easy_setopt()函數設置請求地址、跟隨重定向等參數,最后通過curl_easy_perform()函數執行請求,并通過printf()輸出請求結果。如果請求成功,函數返回值為CURLE_OK。
接下來,需要解析獲取到的JSON數據。可以使用cJSON庫來進行JSON解析。以下是一個解析JSON數據的示例:
#include#include #include "cJSON.h" int main(void) { CURL *curl; CURLcode res; char *url = "http://example.com/data.json"; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); res = curl_easy_perform(curl); if(res == CURLE_OK) { char *json_str = NULL; cJSON *json = cJSON_Parse(json_str); // 解析JSON數據 cJSON *data = cJSON_GetObjectItemCaseSensitive(json, "data"); // 獲取"data"字段 if(cJSON_IsArray(data)) { // 判斷"data"字段是否為數組 cJSON_ArrayForEach(data_item, data) { // 遍歷數組項 cJSON *id = cJSON_GetObjectItemCaseSensitive(data_item, "id"); cJSON *name = cJSON_GetObjectItemCaseSensitive(data_item, "name"); printf("id: %d, name: %s\n", id->valueint, name->valuestring); } } cJSON_Delete(json); // 刪除JSON數據 } curl_easy_cleanup(curl); } return 0; }
代碼首先使用cJSON_Parse()函數解析獲取到的JSON數據,然后使用cJSON_GetObjectItemCaseSensitive()函數獲取"data"字段,判斷其是否為數組,并使用cJSON_ArrayForEach()函數遍歷數組項,獲取每一項的"id"和"name"字段,并輸出其值。
以上就是在C語言中請求接口并解析JSON的基本流程,當然還有更加復雜的JSON數據結構和接口請求方法,需要根據具體情況進行調整。
上一篇vue a標簽跳頁