在C語(yǔ)言中,如何接收J(rèn)SON數(shù)據(jù)呢?
需要用到以下兩個(gè)庫(kù): - cJSON:一個(gè)用于解析JSON數(shù)據(jù)的輕量級(jí)庫(kù)。 - libcurl:一個(gè)用于發(fā)送HTTP請(qǐng)求的庫(kù)。 下面是一個(gè)簡(jiǎn)單的例子:
#include#include #include #include #include "cJSON.h" int main(void) { CURL *curl; CURLcode res; char *url = "http://example.com/json"; char response[1000]; cJSON *json = NULL; cJSON *data = NULL; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_memory_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)response); res = curl_easy_perform(curl); if(res != CURLE_OK) { printf("Error: %s\n", curl_easy_strerror(res)); } else { json = cJSON_Parse(response); if (!json) { printf("Error: JSON data is invalid.\n"); } else { data = cJSON_GetObjectItem(json, "data"); printf("Data: %s\n", cJSON_Print(data)); } } curl_easy_cleanup(curl); } return 0; }
在此代碼中,我們首先初始化了CURL庫(kù),并設(shè)置了URL以及輸出數(shù)據(jù)的回調(diào)函數(shù)。回調(diào)函數(shù)的作用是將接收到的數(shù)據(jù)存儲(chǔ)在response變量中。
接下來,我們使用cJSON庫(kù)解析JSON數(shù)據(jù),如果發(fā)現(xiàn)數(shù)據(jù)無效,則報(bào)錯(cuò),否則輸出數(shù)據(jù)中的data字段。
這只是一個(gè)簡(jiǎn)單的例子,當(dāng)然你可以根據(jù)自己的需要進(jìn)行修改和擴(kuò)展。