JSONCPP имеет автора, но все, что ему кажется, это получить информацию от синтаксического анализатора, а затем вывести его в строку или поток. Как мне изменить или создать новые объекты, массивы, значения, строки и т.д. И записать их в файл?
JSONCPP Запись в файлы
Ответ 1
#include<json/writer.h>
код:
Json::Value event;
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
event["competitors"]["home"]["name"] = "Liverpool";
event["competitors"]["away"]["code"] = 89223;
event["competitors"]["away"]["name"] = "Aston Villa";
event["competitors"]["away"]["code"]=vec;
std::cout << event << std::endl;
Вывод:
{
"competitors" :
{
"away" :
{
"code" : [ 1, 2, 3 ],
"name" : "Aston Villa"
},
"home" :
{
"name" : "Liverpool"
}
}
}
Ответ 2
AFAICT вы создаете объекты типа Json:: Value, которые обслуживают все типы данных JSON, и передают результат в Json:: Writer (один из его производных типов, если быть конкретным), или просто поток.
Например: для записи массива из трех целых чисел в файл:
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;
Ответ 3
#include <json.h>
#include <iostream>
#include <fstream>
void main()
{
std::ofstream file_id;
op_file_id.open("file.txt");
Json::Value value_obj;
//populate 'value_obj' with the objects, arrays etc.
Json::StyledWriter styledWriter;
file_id << styledWriter.write(value_obj);
file_id.close();
}
Ответ 4
Сначала вы должны создать желаемый JSON::Value
. Вы должны посмотреть на все конструкторы (сначала). Чтобы создать необходимые иерархии, см. append
и перегрузка оператора []; есть перегрузки для массива индексы и строковые ключи для объектов.
Один из способов записать значение JSON обратно: StyledStreamWriter::write
и ofstream
.
См. ответ cegprakash для написания.