写入现有 json 文件

Write to existing json file

我正在使用此代码添加到我现有的 JSON 文件中。但是它完全覆盖了我的 JSON 文件,当我只想将另一个项目添加到我的 JSON 文件中的项目列表时,它只是将一个 JSON 对象放入其中。我该如何解决这个问题?

Json::Value root;
    root[h]["userM"] = m;
    root[h]["userT"] = t;
    root[h]["userF"] = f;
    root[h]["userH"] = h;
    root[h]["userD"] = d;

    Json::StreamWriterBuilder builder;
    std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
    std::ofstream outputFileStream("messages.json");
    writer-> write(root, &outputFileStream);

我的建议是

  • 将文件加载到 Json::Value
  • 添加或更改您想要的任何字段
  • 用更新后的文件覆盖原文件Json::Value

这样做是最不容易出错的方法,除非您有非常大的 Json 文件,否则它会很快起作用。

如何读入整个文件

这很简单!我们创建根目录,然后使用 >> 运算符读入文件。

Json::Value readFile(std::istream& file) {
    Json::Value root;
    Json::Reader reader;
    bool parsingSuccessful = reader.parse( file, root );
    if(not parsingSuccessful) {
        // Handle error case
    }
    return root; 
}

有关详细信息,请参阅 this documentation here