0

我有一个 C++ 程序,我在许多不同的文件和类之间跳转,收集我想作为一个干净的 JSON 文件输出的数据。

我正在使用nlohmann 的 JSON文件。

我可以通过执行以下操作成功写入 JSON 文件:

json dm;
to_json(dm);
std::ofstream o("data_model.json");
o << setw(1) << dm << "\n";

void World::to_json(json& dm) {
    dm = {
           {"People", {
             {"Rick", "c137"},
             {"Jerry", "N/A"}
         }}};
}

data_model.json 然后看起来像:

{
 "People": {
  "Jerry": "N/A",
  "Rick": "c137"
 }
}

这是一个多么想要的,到目前为止这么好!

但是,我似乎无法将“dm”传递给另一个函数并附加到 JSON 文件中;看来我只能写入 JSON 文件一次。

为了解决这个问题,我尝试将所有想要的数据写入一个常规的 txt 文件,然后以某种方式一次性将数据从文本文件复制到 JSON 文件中。

这是我尝试这样做的一个示例:

const char* fname = "text.txt";

// Writing to text file to later read from:
std::ofstream txt_for_jsn;
txt_for_jsn.open(fname);
txt_for_jsn <<
            "{\n" <<
            "{\"People\": {\n" <<
            "\"Rick\": \"c137\"\n" <<
            "\"Jerry\": \"N/A\"\n" <<
            "}}};";
txt_for_jsn.close();

// Appending all lines from txt file to one string:
string txt_to_str;
std::ifstream read_file(fname);
string line;
while(std::getline(read_file, line)){
  txt_to_str.append(line);
}
// Assigning the string that contains all of the txt file to the JSON file
dm = txt_to_str;

但是,这并没有提供与以前相同的所需输出。相反,我得到了这个:

"{{\"People\": {\"Rick\": \"c137\"\"Jerry\": \"N/A\"}}};"

有没有更好的方法可以将我广泛传播的数据很好地整合到 JSON 文件中?

4

0 回答 0