У меня есть программа на 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 только один раз.
Чтобы обойти это, я вместо этого пытаюсь записать все нужные данные в обычный текстовый файл, а затем каким-то образом скопировать данные из текстовый файл в файл JSON в одном go.
Вот пример того, как я пытался это сделать:
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?