nlohmann 结构体转换为json数组
时间: 2024-09-19 22:12:45 浏览: 56
C++结构体和json/xml之间互相转换
Nlohmann JSON库(https://nlohmann.github.io/json/)是一个简洁、快速并且易于使用的JSON解析器和生成器,用于C++。如果你有一个自定义的结构体(struct),你可以使用它的`to_json`和`from_json`函数将其转换为JSON格式。
首先,确保你已经包含`nlohmann/json.hpp`头文件:
```cpp
#include <nlohmann/json.hpp>
using json = nlohmann::json;
```
然后,假设你有如下的结构体(`MyStruct`):
```cpp
struct MyStruct {
std::string name;
int age;
// 更多成员...
};
```
要将这个结构体转换为JSON数组,你需要创建一个`std::vector<MyStruct>`并调用`to_json`函数:
```cpp
std::vector<MyStruct> myStructs = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};
json jsonArray;
for (const auto& structObj : myStructs) {
jsonArray.push_back(structObj);
}
```
现在,`jsonArray`就是一个包含了`MyStruct`对象的JSON数组。
如果你想反向操作,从JSON数组还原到结构体数组,你可以这样做:
```cpp
json jsonArrayExample = R"({"name": "Alice", "age": 25, "name": "Bob", "age": 30})"; // 假设这是一个有效的JSON字符串
std::vector<MyStruct> deserializedStructs;
for (const auto& jObj : jsonArrayExample.get_array()) {
MyStruct newStruct;
newStruct.name = jObj["name"];
newStruct.age = jObj["age"];
// 添加其他字段处理...
deserializedStructs.push_back(newStruct);
}
```
阅读全文