从 bson 转换而来的 json 没有任何转储
Nothing dumped from json that converted from bson
关于 nlohmann 的 json 库,我需要你的帮助。
我写了这段代码。
std::vector<std::uint8_t> v = nlohmann::json::to_bson(jInit);
std::vector<std::uint8_t> s;
for (auto& i : v)
{
s.push_back(v[i]);
}
std::ofstream ofs(s_basePath + "dump.txt");
ofs << nlohmann::json::from_bson(s).dump();
这只是将 json 转换为 bson,然后将 bson 转换为 json 并将其转储为文本文件。
出于某些原因,我必须使用 push_back() 并取回 json。
问题是,转储文本文件的大小为 0 kb,不会转储任何内容。
我也试过这段代码,它正在工作。
std::vector<std::uint8_t> v = nlohmann::json::to_bson(jInit);
std::ofstream ofs(s_basePath + "dump.txt");
ofs << nlohmann::json::from_bson(v).dump();
我不知道向量 v 和 s 之间有什么区别。
问题与 json/bson. It's just that you use every uint8_t
in the original bson 数据无关,因为 索引 进入完全相同的数据,这会扰乱所有内容。
错误:
for (auto& i : v)
{
s.push_back(v[i]); // `i` is not an index
}
正确的循环应该是这样的:
for (auto& i : v)
{
s.push_back(i); // `i` is a reference to the actual data you should put in `s`
}
如果您需要包含 bson 数据的矢量副本,您可以简单地复制它:
s = v;
关于 nlohmann 的 json 库,我需要你的帮助。 我写了这段代码。
std::vector<std::uint8_t> v = nlohmann::json::to_bson(jInit);
std::vector<std::uint8_t> s;
for (auto& i : v)
{
s.push_back(v[i]);
}
std::ofstream ofs(s_basePath + "dump.txt");
ofs << nlohmann::json::from_bson(s).dump();
这只是将 json 转换为 bson,然后将 bson 转换为 json 并将其转储为文本文件。
出于某些原因,我必须使用 push_back() 并取回 json。
问题是,转储文本文件的大小为 0 kb,不会转储任何内容。
我也试过这段代码,它正在工作。
std::vector<std::uint8_t> v = nlohmann::json::to_bson(jInit);
std::ofstream ofs(s_basePath + "dump.txt");
ofs << nlohmann::json::from_bson(v).dump();
我不知道向量 v 和 s 之间有什么区别。
问题与 json/bson. It's just that you use every uint8_t
in the original bson 数据无关,因为 索引 进入完全相同的数据,这会扰乱所有内容。
错误:
for (auto& i : v)
{
s.push_back(v[i]); // `i` is not an index
}
正确的循环应该是这样的:
for (auto& i : v)
{
s.push_back(i); // `i` is a reference to the actual data you should put in `s`
}
如果您需要包含 bson 数据的矢量副本,您可以简单地复制它:
s = v;