C++如何读取json文件
时间: 2023-11-02 18:02:58 浏览: 173
C++读取JSON文件可以使用第三方库,比如RapidJSON和JSON for Modern C++。这里以RapidJSON为例,步骤如下:
1. 下载RapidJSON库,可以从官网https://rapidjson.org/下载,或者使用包管理工具,如vcpkg。
2. 在C++代码中包含RapidJSON头文件:
```
#include "rapidjson/document.h"
#include "rapidjson/filereadstream.h"
```
3. 定义一个`rapidjson::Document`对象,用于解析JSON文件:
```
rapidjson::Document doc;
```
4. 打开JSON文件并创建一个文件读取流:
```
FILE* fp = fopen("example.json", "rb"); // 打开JSON文件
char readBuffer[65536];
rapidjson::FileReadStream is(fp, readBuffer, sizeof(readBuffer)); // 创建文件读取流
```
5. 解析JSON文件:
```
doc.ParseStream(is);
```
6. 使用`doc`对象访问JSON数据,例如:
```
const rapidjson::Value& array = doc["array"]; // 获取数组
for (rapidjson::SizeType i = 0; i < array.Size(); i++) { // 遍历数组
const rapidjson::Value& obj = array[i];
std::string name = obj["name"].GetString(); // 获取对象属性值
int age = obj["age"].GetInt();
std::cout << name << " " << age << std::endl;
}
```
完整代码示例:
```
#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/filereadstream.h"
int main() {
FILE* fp = fopen("example.json", "rb");
char readBuffer[65536];
rapidjson::FileReadStream is(fp, readBuffer, sizeof(readBuffer));
rapidjson::Document doc;
doc.ParseStream(is);
const rapidjson::Value& array = doc["array"];
for (rapidjson::SizeType i = 0; i < array.Size(); i++) {
const rapidjson::Value& obj = array[i];
std::string name = obj["name"].GetString();
int age = obj["age"].GetInt();
std::cout << name << " " << age << std::endl;
}
fclose(fp);
return 0;
}
```