JSON转换为nlohmann JSON-lib中的结构数组
JSON to an array of structs in nlohmann json lib
我最近问了一个关于将对象数组转换为结构向量的问题。我想做同样的事情,但向量我想要一个数组。例如
[
{
"Name": "Test",
"Val": "TestVal"
},
{
"Name": "Test2",
"Val": "TestVal2"
}
]
想要这些结构的数组:
struct Test {
string Name;
string Val;
};
这怎么可能呢?我是c++的新手,所以如果我做错了什么,请这么说。
最简单的方法是尽可能使用std::array
而不是C数组。std::array
是一个类似于普通数组的C++,它添加了std::vector
中所有漂亮的东西,比如size()
和迭代器。与C数组不同,您也可以从函数返回它们。
nlohmann还自动支持:
auto parsed = json.get<std::array<Test, 2>>();
不确定库是否支持普通的ol’C数组。但你可以用一点模板魔法来编写一个辅助函数:
template <typename T, size_t N>
void from_json(const nlohmann::json& j, T (&t)[N]) {
if (j.size() != N) {
throw std::runtime_error("JSON array size is different than expected");
}
size_t index = 0;
for (auto& item : j) {
from_json(item, t[index++]);
}
}
用法:
Test my_array[N];
from_json(json, my_array);
演示:https://godbolt.org/z/-jDTdj
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组