欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c http json數據格式

吉茹定1年前9瀏覽0評論

c http json數據格式

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <jansson.h>
static size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream) {
size_t written = fwrite(ptr, size, nmemb, (FILE *) stream);
return written;
}
int main(int argc, char **argv) {
CURL *curl;
CURLcode res;
char *url = "https://api.github.com/repos/octocat/hello-world";
FILE *fp;
char *filename = "response.json";
json_t *root;
json_error_t error;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
fp = fopen(filename, "w");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
fp = fopen(filename, "r");
root = json_loadf(fp, 0, &error);
if (!root) {
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return 1;
}
json_t *name = json_object_get(root, "name");
if (json_is_string(name)) {
printf("Repository name: %s\n", json_string_value(name));
}
json_t *owner = json_object_get(root, "owner");
if (json_is_object(owner)) {
json_t *login = json_object_get(owner, "login");
if (json_is_string(login)) {
printf("Owner's name: %s\n", json_string_value(login));
}
}
json_decref(root);
curl_global_cleanup();
return 0;
}

上述這段c代碼實現了使用c語言獲取Github API返回的json數據,并解析其中的name和owner項。

json數據格式在web開發中較為常用,它使用key-value的形式保存數據。在c語言中,我們可以使用第三方庫例如jansson來讀取和解析json數據。

在上述代碼中,先使用curl發送get請求,將返回的數據保存至文件中。接著用jansson庫中的json_loadf()函數加載json文件,接著從中獲取必要的信息。

值得注意的是,在使用完jansson的對象后應該調用json_decref()函數來釋放占用的內存。