写入现有的json文件

时间:2019-04-08 21:18:06

标签: c++ json jsoncpp

我正在使用此代码将其添加到我现有的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);

1 个答案:

答案 0 :(得分:1)

我的建议是

  • 将文件加载到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