1

我需要解析一个文件,获取一些数据并使用 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);
4

2 回答 2

1

FileWriteStream在提出这个问题之后有更好的文档。

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

于 2015-12-06T04:24:38.447 回答
0

你最好用

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

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

于 2014-04-04T07:15:14.340 回答