从 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 之间有什么区别。

问题与 /. It's just that you use every uint8_t in the original 数据无关,因为 索引 进入完全相同的数据,这会扰乱所有内容。

错误:

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`
}

如果您需要包含 数据的矢量副本,您可以简单地复制它:

s = v;