對于C語言開發者來說,進行json數據的解析是一項必不可少的技能。在網絡請求中,常常需要通過get請求獲取json數據并進行解析。下面將介紹如何使用C語言進行json get請求。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #include <json-c/json.h> /* * 獲取json數據并存儲到緩沖區中 */ static size_t write_callback(void *buffer, size_t size, size_t nmemb, void *userp) { size_t real_size = size * nmemb; char *real_buffer = (char *)userp; strcat(real_buffer, buffer); return real_size; } int main() { CURL *curl; CURLcode res; char *url = "http://example.com/data.json"; char buffer[1024] = {0}; //緩沖區 struct json_object *json; //json對象 curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer); res = curl_easy_perform(curl); if(res != CURLE_OK) { printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); curl_global_cleanup(); return 1; } json = json_tokener_parse(buffer); /* TODO:對json數據進行解析 */ curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }
以上代碼中,首先通過CURL庫實現了對指定url進行get請求并將返回的json數據存儲到緩沖區中。然后通過json_tokener_parse函數將緩沖區中的json數據轉換成json對象,接下來就可以對json數據進行解析并使用了。