如何在文件中添加rapidjson :: Document

时间:2014-02-03 10:22:15

标签: c++ rapidjson

我需要解析一个文件,获取一些数据并使用RapidJson将它们写在另一个文件中。

写作我可以将价值观提升并将其存入文件中。我唯一的问题是插入

文件中的文件:

FILE * pFile = fopen ("read.json" , "r");

FILE * wFile = fopen ("Test.json" , "w");

if (pFile!=NULL)
{

    rapidjson::FileStream is(pFile);
    rapidjson::Document document;
    document.ParseStream<0>(is);
    string mMeshID = a.GetString();
    //how to add that document to wfile
    fclose (pFile);

}

有没有办法在文件中写一个RapidJson :: Document?

修改

我创立的唯一方式是:

       //Convert JSON document to string
    GenericStringBuffer< UTF8<> > buffer;
    Writer<GenericStringBuffer< UTF8<> > > writer(buffer);
    doc.Accept(writer);
    const char* str = buffer.GetString();
    fprintf(wFile, "%s", str);
    fclose(wFile);

2 个答案:

答案 0 :(得分:1)

在提出此问题之后,有关FileWriteStream的更好文档。

使用FileWriteStream代替StringBuffer可以减少内存使用量。 FileWriteStream使用固定大小的缓冲区(可以存储在堆栈中),而StringBuffer需要将整个JSON存储在(堆)内存中。它对于大JSON来说是一个很大的不同。

答案 1 :(得分:0)

你最好使用

fwrite (buffer.GetString(), buffer.GetSize(), 1, wFile);

它更安全(如果缓冲区不是以空值终止的)并且更快(没有strlen) 除此之外,你的代码中没有错误检查,这很好,应该将JSON写入文件NP。