在C語言中,我們可以通過HTTP請(qǐng)求來實(shí)現(xiàn)與服務(wù)器端的數(shù)據(jù)交互。而獲取到的數(shù)據(jù)往往都是以JSON格式返回的,因此我們需要使用將JSON解析成C語言可讀的數(shù)據(jù)結(jié)構(gòu)。
#include#include #include #include "cJSON.h" int main(void) { CURL *curl; CURLcode res; char *json_string; cJSON *root = NULL; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/data.json"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); res = curl_easy_perform(curl); if (res == CURLE_OK) { curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &content_type); if (strncmp(content_type, "application/json", strlen("application/json")) == 0) { json_string = (char *)malloc(strlen(chunk->memory) + 1); if (json_string != NULL) { strcpy(json_string, chunk->memory); } } } curl_easy_cleanup(curl); } root = cJSON_Parse(json_string); if (root == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { cJSON *item = NULL; cJSON_ArrayForEach(item, root) { printf("%s\n", cJSON_Print(item)); } } return 0; }
在上述代碼中,我們使用了curl庫來進(jìn)行HTTP請(qǐng)求。在獲取到服務(wù)器返回的數(shù)據(jù)后,我們通過cJSON庫將JSON字符串轉(zhuǎn)化成了C語言中的數(shù)據(jù)結(jié)構(gòu)。這樣我們就可以方便地對(duì)獲取到的數(shù)據(jù)進(jìn)行操作和處理。