nlohmann_json读取一个json文件中的结构体数组
时间: 2023-09-12 19:07:39 浏览: 193
读写json文件
3星 · 编辑精心推荐
要读取一个 JSON 文件中的结构体数组,我们需要定义一个结构体,并使用 `nlohmann_json` 库提供的 `json::parse()` 函数来解析 JSON 文件。以下是一个示例代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// 定义一个结构体
struct Person {
std::string name;
int age;
};
int main() {
// 打开 JSON 文件
std::ifstream ifs("example.json");
// 读取 JSON 文件
json j = json::parse(ifs);
// 解析 JSON 数组
std::vector<Person> persons;
for (auto& elem : j["data"]) {
Person p;
p.name = elem["name"];
p.age = elem["age"];
persons.push_back(p);
}
// 遍历结构体数组
for (auto& p : persons) {
std::cout << "Name: " << p.name << ", Age: " << p.age << std::endl;
}
return 0;
}
```
在这个示例中,我们首先定义了一个名为 `Person` 的结构体,它包含了一个名为 `name` 的字符串和一个名为 `age` 的整数。然后我们打开了一个名为 `example.json` 的 JSON 文件,使用 `json::parse()` 函数将其解析成一个 `json` 对象。由于这个 JSON 对象中含有一个名为 `data` 的结构体数组,我们可以使用 `j["data"]` 来访问它,并使用 for 循环遍历其中的元素,将每个元素解析为一个结构体,并将其添加到一个 `std::vector<Person>` 中。
最后,我们再次使用 for 循环遍历结构体数组,并将每个结构体的 `name` 和 `age` 输出到控制台上。
需要注意的是,在解析 JSON 数组时,我们需要使用 for 循环遍历其中的元素,并将每个元素解析为一个结构体。在解析时,我们可以使用 `elem["name"]` 和 `elem["age"]` 来访问结构体中的字段。
阅读全文