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

c語言里怎么讀取json文件

錢衛國2年前11瀏覽0評論

在C語言中,讀取JSON文件可以使用第三方庫,比如CJSON庫。

首先要在代碼中引入CJSON庫的頭文件:

#include "cJSON.h"

接著需要定義一個指向JSON對象的指針:

cJSON *json;

然后讀取JSON文件的內容:

char *buffer = NULL; //用于保存文件內容的緩沖區
long length;
FILE *file = fopen("example.json", "r");
if (file)
{
fseek(file, 0, SEEK_END);
length = ftell(file);
fseek(file, 0, SEEK_SET);
buffer = (char*)malloc(length);
if (buffer)
{
fread(buffer, 1, length, file);
}
fclose(file);
}

這段代碼將JSON文件的內容讀取到了緩沖區中。

接下來,使用CJSON庫解析緩沖區的內容:

json = cJSON_Parse(buffer);

如果解析成功,json指向的就是該JSON文件的根對象,可以通過它來訪問文件中的數據。

最后,要釋放buffer占用的內存:

if (buffer) free(buffer);

完整的代碼示例:

#include "cJSON.h"
int main()
{
cJSON *json;
char *buffer = NULL;
long length;
FILE *file = fopen("example.json", "r");
if (file)
{
fseek(file, 0, SEEK_END);
length = ftell(file);
fseek(file, 0, SEEK_SET);
buffer = (char*)malloc(length);
if (buffer)
{
fread(buffer, 1, length, file);
}
fclose(file);
}
json = cJSON_Parse(buffer);
if (buffer) free(buffer);
//訪問文件中的數據
cJSON *name = cJSON_GetObjectItem(json, "name");
printf("name = %s\n", name->valuestring);
cJSON *age = cJSON_GetObjectItem(json, "age");
printf("age = %d\n", age->valueint);
cJSON_Delete(json); //釋放JSON對象
return 0;
}