在C語言開發中,獲取頁面JSON值是一個常見的需求。下面介紹一下如何實現。
#include <stdio.h> #include <stdlib.h> #include <curl/curl.h> #include <jansson.h> // 回調函數,處理獲取到的數據 size_t callback(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; char *data = (char *)contents; printf("%s", data); // 打印獲取到的數據 return realsize; } int main() { CURL *curl; CURLcode res; char *url = "https://api.example.com/data.json"; char error[512]; curl = curl_easy_init(); // 初始化curl if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); // 設置url curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback); // 設置回調函數 res = curl_easy_perform(curl); // 執行curl操作 if(res != CURLE_OK) { printf("curl error: %s", curl_easy_strerror(res)); } } curl_easy_cleanup(curl); // 清理curl return 0; }
以上是一個簡單的實現獲取頁面JSON值的代碼例子。首先需要導入curl和jansson兩個庫。實現思路是使用curl來發起請求,獲取到返回的數據,然后通過回調函數來處理數據并打印出來。
在實際應用中,一般會使用jansson庫來對JSON數據進行解析和處理,例如:
json_t *root; json_error_t error; root = json_loads(data, 0, &error); // 解析JSON數據 if(!root) { printf("JSON parse error: %s", error.text); } else { json_t *value = json_object_get(root, "key"); // 獲取JSON數據中某個字段的值 char *str = json_string_value(value); // 轉換為字符串類型 printf("%s", str); // 打印字段值 json_decref(root); // 釋放內存 }
以上是對獲取到的JSON數據解析和處理的示例代碼。實現中使用到了jansson庫提供的json_loads函數來解析JSON數據,以及json_object_get函數來獲取JSON數據中的某個字段的值,并將其轉換為字符串類型進行打印。
上一篇c 增加json數組長度
下一篇MySQL寫交集