Как я могу записать некоторые данные в файл с использованием документа quickjson:
Вот что мне нужно написать:
"Big Node ": [
{ "Big Key": "Key Value 1", "Child Key": "Key Value 1", "Values": [ 1, 3, 4, 1, 2, 3 ] },
{ "Big Key": "Key Value 2", "Child Key": "Key Value 2", "Values": [ 17, 18, 5, 4, 17] }
]
Как только вы получите строку, записать ее в файл так же просто, как std::ofstream (path) << string
,
Вот пример записи JSON в файл:
char cbuf[1024]; rapidjson::MemoryPoolAllocator<> allocator (cbuf, sizeof cbuf);
rapidjson::Document meta (&allocator, 256);
meta.SetObject();
meta.AddMember ("foo", 123, allocator);
typedef rapidjson::GenericStringBuffer<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<>> StringBuffer;
StringBuffer buf (&allocator);
rapidjson::Writer<StringBuffer> writer (buf, &allocator);
meta.Accept (writer);
std::string json (buf.GetString(), buf.GetSize());
std::ofstream of ("/tmp/example.json");
of << json;
if (!of.good()) throw std::runtime_error ("Can't write the JSON string to the file!");
Если вы хотите избежать двойной буферизации, вы можете написать прямо в ofstream
:
struct Stream {
std::ofstream of {"/tmp/example.json"};
typedef char Ch;
void Put (Ch ch) {of.put (ch);}
void Flush() {}
} stream;
rapidjson::Writer<Stream> writer (stream, &allocator);
meta.Accept (writer);
Есть также FileWriteStream.
Других решений пока нет …