Преобразовать текстовый файл в JSON в C ++ - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть программа на 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?

...