json解析数组 nlohmann_从零开始学JSON(修订版)
时间: 2023-11-18 20:04:17 浏览: 44
要解析 JSON 数组,可以使用 nlohmann_json 库提供的函数来实现。以下是一个示例代码:
```c++
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
// JSON 字符串
std::string json_str = "[1, 2, 3, 4, 5]";
// 解析 JSON
json j = json::parse(json_str);
// 遍历 JSON 数组
for (auto& elem : j) {
std::cout << elem << std::endl;
}
return 0;
}
```
输出结果为:
```
1
2
3
4
5
```
在这个示例中,我们首先定义了一个 JSON 字符串,然后使用 `json::parse` 函数将其解析成一个 `json` 对象。由于这个 JSON 对象是一个数组,所以我们可以使用范围 for 循环来遍历其中的元素,并将每个元素输出到控制台上。
需要注意的是,在解析 JSON 数组时,我们必须首先将 JSON 字符串解析成一个 `json` 对象,然后才能对其进行遍历操作。
相关问题
nlohmann_json读取一个json文件中的数组
要读取一个 JSON 文件中的数组,我们可以使用 `nlohmann_json` 库提供的 `json::parse()` 函数来解析 JSON 文件,然后再遍历数组。以下是一个示例代码:
```c++
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
// 打开 JSON 文件
std::ifstream ifs("example.json");
// 读取 JSON 文件
json j = json::parse(ifs);
// 遍历 JSON 数组
for (auto& elem : j["data"]) {
std::cout << elem << std::endl;
}
return 0;
}
```
在这个示例中,我们首先打开了一个名为 `example.json` 的 JSON 文件,然后使用 `json::parse()` 函数将其解析成一个 `json` 对象。由于这个 JSON 对象中含有一个名为 `data` 的数组,我们可以使用 `j["data"]` 来访问它,并使用范围 for 循环来遍历其中的元素,并将每个元素输出到控制台上。
需要注意的是,在读取 JSON 文件时,我们首先必须打开它,然后使用 `json::parse()` 函数将其解析成一个 `json` 对象。如果 JSON 文件无法打开或解析失败,程序将抛出异常。
nlohmann_json读取一个json文件中的结构体数组
要读取一个 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"]` 来访问结构体中的字段。