我有一个 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 文件中?