C調(diào)用WebAPI JSON有許多好處。首先,我們可以通過WebAPI訪問外部數(shù)據(jù)源,比如訪問云端存儲(chǔ)數(shù)據(jù);其次,WebAPI可以提供數(shù)據(jù)交換的能力,讓不同的系統(tǒng)之間可以互相交換數(shù)據(jù)。本文將介紹如何在C語言程序中調(diào)用WebAPI,并解析返回的JSON數(shù)據(jù)。
以下是一個(gè)簡(jiǎn)單的例子,演示如何使用C語言程序調(diào)用WebAPI并解析返回的JSON數(shù)據(jù):
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <jansson.h>
/* This is a callback function for CURL */
size_t curl_write(void *buffer, size_t size, size_t nmemb, void *userp) {
size_t real_size = size * nmemb;
char *str = (char *) userp;
strncat(str, buffer, real_size);
return real_size;
}
int main() {
CURL *curl = curl_easy_init();
CURLcode res;
char *response_str = malloc(4096);
memset(response_str, '\0', 4096);
char *url = "https://jsonplaceholder.typicode.com/posts/1";
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, response_str);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printf("Failed to get data from server.\n");
return -1;
}
curl_easy_cleanup(curl);
/* Parse JSON */
json_error_t error;
json_t *root = json_loads(response_str, 0, &error);
if (!root) {
printf("Error at line %d: %s\n", error.line, error.text);
return -1;
}
json_t *title = json_object_get(root, "title");
printf("Post title: %s\n", json_string_value(title));
free(response_str);
return 0;
}
在這個(gè)例子中,我們使用了CURL庫來發(fā)起HTTP請(qǐng)求,并將返回的數(shù)據(jù)保存在字符串變量中。我們又使用了jansson庫來解析JSON數(shù)據(jù)。這個(gè)例子僅僅是一個(gè)簡(jiǎn)單的示范,真實(shí)場(chǎng)景下,我們需要更多的代碼來處理錯(cuò)誤和提取所需的數(shù)據(jù)。