如果结构体有多个字段呢?
时间: 2024-10-20 13:08:53 浏览: 7
如果结构体(struct)有多个字段,转换为nlohmann::json时,每个字段都可以单独处理。只需要为每个字段都提供对应的`to_json`和`from_json`方法,以便nlohmann::json能够识别并序列化这些字段。
例如,考虑一个名为`User`的结构体,包含了姓名`name`、年龄`age`和电子邮件`email`:
```cpp
struct User {
std::string name;
int age;
std::string email;
void to_json(json& j) const {
j["name"] = name;
j["age"] = age;
j["email"] = email;
}
static void from_json(const json& j, User& user) {
j.at("name").get_to(user.name);
j.at("age").get_to(user.age);
j.at("email").get_to(user.email);
}
};
```
在转换`std::vector<User>`时,只需对每个用户对象调用`to_json`方法即可:
```cpp
void vector_to_json(std::vector<User>& users, json& j) {
for (const auto& user : users) {
j.push_back(user.to_json());
}
}
```
这会生成一个JSON数组,每个元素都是一个包含`name`、`age`和`email`键值对的对象。
阅读全文