在Web開發(fā)中,經(jīng)常需要使用C語言調(diào)用HTTP API,并處理返回的JSON數(shù)據(jù)。本文將介紹如何使用C語言實(shí)現(xiàn)HTTP請求和JSON處理的實(shí)例。
首先,我們需要使用C語言的curl庫實(shí)現(xiàn)HTTP請求。curl庫可在 https://curl.se/ 下載到最新版本。下面是一個(gè)簡單的HTTP GET請求示例:
#include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); 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_easy_init()函數(shù)初始化一個(gè)CURL結(jié)構(gòu)體,然后通過curl_easy_setopt()函數(shù)設(shè)置URL參數(shù)。最后通過curl_easy_perform()函數(shù)執(zhí)行HTTP請求。
接下來,我們需要使用C語言的json-c庫解析JSON數(shù)據(jù)。json-c庫可在 https://github.com/json-c/json-c 下載到最新版本。下面是一個(gè)簡單的JSON解析示例:
#include <stdio.h> #include <json-c/json.h> int main(void) { const char *json_string = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; json_object *jobj = json_tokener_parse(json_string); json_object *name_obj; json_object *age_obj; json_object *city_obj; json_object_object_get_ex(jobj, "name", &name_obj); json_object_object_get_ex(jobj, "age", &age_obj); json_object_object_get_ex(jobj, "city", &city_obj); const char *name = json_object_get_string(name_obj); int age = json_object_get_int(age_obj); const char *city = json_object_get_string(city_obj); printf("name=%s, age=%d, city=%s\n", name, age, city); return 0; }
上面的示例代碼使用json_tokener_parse()函數(shù)將JSON字符串轉(zhuǎn)換成json_object對象,然后通過json_object_object_get_ex()函數(shù)獲取指定的json_object元素。最后通過json_object_get_string()和json_object_get_int()函數(shù)獲取指定元素的值。
綜上所述,我們可以使用C語言的curl庫和json-c庫實(shí)現(xiàn)HTTP請求和JSON數(shù)據(jù)的解析。在實(shí)際開發(fā)中,可以根據(jù)需要對示例代碼進(jìn)行修改。