在C語言中,我們可以使用libcurl庫進行網絡請求,同時也可以使用json-c庫來解析json數據。下面我們來看一個例子。
#include <stdio.h> #include <curl/curl.h> #include <json-c/json.h> size_t write_callback_func(char *ptr, size_t size, size_t nmemb, void *userdata) { json_object *json = (json_object *)userdata; json_object *parsed_json = json_tokener_parse(ptr); json_object_object_add(json, "response", parsed_json); return size * nmemb; } int main() { CURL *curl; CURLcode res; char *url = "https://jsonplaceholder.typicode.com/todos/1"; curl = curl_easy_init(); json_object *json = json_object_new_object(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback_func); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)json); 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); } printf("JSON: %s\n", json_object_to_json_string(json)); json_object_put(json); return 0; }
在這個例子中,我們使用了write_callback_func函數來處理網絡請求返回的數據。這個函數的作用是將Json數據存儲到json_object對象中。
在主函數中,我們首先初始化了CURL對象,并創建了一個json_object對象。接著,我們通過curl_easy_setopt函數設置請求參數,其中包括請求的url,回調函數,以及回調函數的數據參數。最后,我們通過curl_easy_perform函數執行網絡請求,如果執行失敗則輸出錯誤信息。最后,我們輸出json數據,并釋放json_object對象。