C語言作為一種高效的編程語言,也可以方便地調(diào)用JSON接口來進行數(shù)據(jù)的處理和交互。今天我們就來介紹如何使用C語言調(diào)用JSON接口。
//引入頭文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <jansson.h>
void get_json_data(char* url){
CURL *curl;
CURLcode res;
char *data = NULL;
size_t n = 0;
// 初始化CURL
curl = curl_easy_init();
if(curl) {
// 設(shè)置需要訪問的URL
curl_easy_setopt(curl, CURLOPT_URL, url);
// 設(shè)置數(shù)據(jù)獲取完后的回調(diào)函數(shù)
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
// 不接收數(shù)據(jù)頭信息
curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
// 執(zhí)行請求
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
// 獲取返回的數(shù)據(jù)
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
// 處理JSON數(shù)據(jù)
json_t *root;
json_error_t error;
root = json_loads(data, 0, &error);
if(!root){
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
exit(EXIT_FAILURE);
}
json_t* content = json_object_get(root, "content");
printf("content: %s\n", json_string_value(content));
free(data);
}
}
size_t callback(char *data, size_t size, size_t nmemb, char *userp) {
size_t realsize = size * nmemb;
char* temp = realloc(userp, n + realsize + 1);
if(temp == NULL) {
fprintf(stderr, "malloc() failed\n");
return 0;
}
userp = temp;
memcpy(userp + n, data, realsize);
n += realsize;
return realsize;
}
int main(){
char* url = "http://localhost:8080/api/content.json";
get_json_data(url);
return 0;
}
在上述代碼中,我們通過CURL庫訪問了一個JSON接口,并獲取了接口返回的JSON數(shù)據(jù)。然后使用jansson庫對JSON數(shù)據(jù)進行解析,并獲取了content字段的值。這樣,我們就成功地在C語言中調(diào)用了JSON接口。