色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 將網站轉為json

謝彥文2年前10瀏覽0評論

在網絡發展的今天,我們可以訪問到全世界各種各樣的網站,但是這些網站的數據一般是以HTML的形式呈現的,如果我們想在我們自己的程序中使用這些數據,那么我們就需要用到c語言將網站轉為json格式。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <json-c/json.h>
//回調函數,在curl_easy_setopt中使用
size_t callback(void *data, size_t size, size_t nmemb, void *userp) {
char *tmp = malloc(size * nmemb + 1);
memcpy(tmp, data, size * nmemb);
tmp[size * nmemb] = '\0';
json_object *json = json_tokener_parse(tmp);
free(tmp);
json_object **out = userp;
*out = json;
return size * nmemb;
}
//將網站轉為json格式
json_object *websiteToJson(char *url) {
CURL *curl = curl_easy_init();
CURLcode res;
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
json_object *result = NULL;
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
curl_easy_cleanup(curl);
return NULL;
}
curl_easy_cleanup(curl);
}
return result;
}
int main() {
json_object *json = websiteToJson("http://example.com");
if (json) {
printf("%s", json_object_to_json_string(json));
}
json_object_put(json);
return 0;
}

以上代碼中我們使用了libcurl庫和json-c庫將網站轉為json格式,首先我們定義了一個回調函數,它的作用是將我們從網站獲取到的數據轉為json格式。接著定義了一個函數websiteToJson,它的作用是將網站的數據以json格式返回。最后我們在main函數中使用websiteToJson函數并將數據以json格式輸出。