帮我用C++写一个json文件的读取
时间: 2023-05-27 16:06:06 浏览: 53
以下是使用C语言读取JSON文件的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main() {
// 打开JSON文件
FILE* fp = fopen("data.json", "r");
if (!fp) {
printf("无法打开文件\n");
return 1;
}
// 读取文件内容并关闭文件
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* buffer = (char*) malloc(size + 1);
fread(buffer, 1, size, fp);
fclose(fp);
buffer[size] = '\0';
// 解析JSON内容
cJSON* root = cJSON_Parse(buffer);
if (!root) {
printf("无法解析JSON内容\n");
return 1;
}
// 读取JSON中的数据
cJSON* name = cJSON_GetObjectItem(root, "name");
cJSON* age = cJSON_GetObjectItem(root, "age");
cJSON* hobbies = cJSON_GetObjectItem(root, "hobbies");
if (!name || !age || !hobbies) {
printf("JSON格式不正确\n");
cJSON_Delete(root);
return 1;
}
// 输出JSON中的数据
printf("姓名:%s\n", name->valuestring);
printf("年龄:%d\n", age->valueint);
printf("爱好:\n");
cJSON* hobby = NULL;
cJSON_ArrayForEach(hobby, hobbies) {
printf("- %s\n", hobby->valuestring);
}
// 释放内存
cJSON_Delete(root);
free(buffer);
return 0;
}
```
上面的代码使用了一个第三方库cJSON来解析JSON内容。在读取JSON文件时,我们首先打开文件,然后读取文件内容并关闭文件。接着,我们使用cJSON_Parse函数将JSON内容解析为一个cJSON对象,然后可以使用cJSON_GetObjectItem函数获取JSON中的数据。最后,我们使用cJSON_ArrayForEach函数遍历数组类型的数据。注意,在使用完cJSON对象后,需要使用cJSON_Delete函数释放内存。