当先锋百科网

首页 1 2 3 4 5 6 7

C语言是一门经典的编程语言,常用于后端开发。在开发过程中,获取JSON数据格式的文件是非常常见的操作。下面将介绍如何使用C语言获取JSON数据格式的文件。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <jansson.h>
static size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {
size_t real_size = size * nmemb;
char *buff_content = malloc(real_size + 1);
memcpy(buff_content, buffer, real_size);
buff_content[real_size] = 0;
json_t *root, *body;
json_error_t error;
root = json_loads(buff_content, 0, &error);
free(buff_content);
if (!root) {
printf("error parse json.\n");
return real_size;
}
body = json_object_get(root, "body");
if (json_typeof(body) == JSON_STRING) {
char *body_str = (char *)json_string_value(body);
printf("body: %s\n", body_str);
} else {
printf("error parse body.\n");
}
json_decref(root);
return real_size;
}
int main() {
CURL *curl;
CURLcode res;
struct curl_slist *headerlist = NULL;
const char *json_url = "http://example.com/json";
curl = curl_easy_init();
if (!curl) {
return 1;
}
headerlist = curl_slist_append(headerlist, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_URL, json_url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printf("error curl.\n");
return 1;
}
curl_slist_free_all(headerlist);
curl_easy_cleanup(curl);
return 0;
}

上代码为使用CURL和JSON库来获取JSON数据格式的文件的示例,可以通过该方法获取JSON数据并对其进行解析处理。