c語言是一種強大的編程語言,可以用于許多不同的應用程序中。其中之一是從url讀取json數據格式。下面我們來看一下如何在c語言中做到這一點。
#include <stdio.h> #include <stdlib.h> #include <curl/curl.h> #include <jansson.h> // 回調函數,用于處理從url獲取的json數據。 static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { // 將json數據存儲在userdata中。 json_t **json_p = userdata; json_error_t error; *json_p = json_loadb(ptr, size * nmemb, 0, &error); return size * nmemb; } int main(void) { CURL *curl = curl_easy_init(); CURLcode res; if(curl) { // 設置url地址。 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/data.json"); // 設置回調函數。 json_t *json; curl_easy_setopt(curl, CURLOPT_WRITEDATA, &json); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); // 執行請求。 res = curl_easy_perform(curl); // 檢查返回狀態。 if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { // 對json數據進行處理。 json_t *root; json_error_t error; root = json_loads(json_dumps(json, 0), 0, &error); if(!root) { fprintf(stderr, "json error on line %d: %s\n", error.line, error.text); } else { // 從json中讀取數據。 json_t *prop = json_object_get(root, "property"); if(!json_is_string(prop)) { fprintf(stderr, "json error: property is not a string\n"); } else { printf("Property value: %s\n", json_string_value(prop)); } } } // 清理資源。 curl_easy_cleanup(curl); } return 0; }
這個程序演示了如何使用cURL和jansson庫從url讀取json數據格式。我們首先設置url地址,然后設置回調函數以處理從url讀取的json數據。在回調函數中,我們將json數據存儲在userdata中。之后,我們對json數據進行處理,從中讀取我們想要的值。
上一篇c 傳輸json數據
下一篇vue去l水印