如今,越來越多的網站提供了API接口,方便開發者獲取網站數據。在使用C語言獲取網頁json數據時,我們可以借助第三方庫進行操作。
// 使用curl庫獲取網頁數據 #include#include int main() { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/data.json"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); 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); // 釋放curl資源 } return 0; }
上述代碼使用curl庫設置請求地址和參數,進行網絡請求,并打印獲取到的網頁json數據。需要注意的是,在使用curl庫時需要先進行相關配置,包括編譯相關庫文件等。
獲取到網頁json數據后,我們需要進行解析。這里,我們可以使用第三方庫cJSON,cJSON是一個簡單的、輕量級、快速的JSON解析器,它可將JSON字符串解析為我們熟悉的C語言結構,以便我們在程序中進行操作。
// 使用cJSON庫解析json數據 #include#include #include "cJSON.h" int main() { char *data = "{\"name\": \"John\", \"age\": 28}"; cJSON *json = cJSON_Parse(data); if (json == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "Error before: %s\n", error_ptr); } return 1; } const cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("Name: %s\n", name->valuestring); } const cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); if (cJSON_IsNumber(age)) { printf("Age: %d\n", age->valueint); } cJSON_Delete(json); // 釋放json資源 return 0; }
上述代碼使用cJSON庫解析了一個簡單的json字符串,并獲取了其中的name和age數據,然后進行了打印輸出。
綜上所述,我們可以通過curl庫和cJSON庫,輕松獲取網頁json數據并進行解析,方便我們在程序中進行數據處理。