rapidjson: рабочий код для чтения документа из файла?

Мне нужен рабочий код C ++ для чтения документа из файла с использованием rapidjson: https://code.google.com/p/rapidjson/

В вики это еще не документировано, примеры десериализуются только из std :: string, я не очень хорошо разбираюсь в шаблонах.

Я сериализовал свой документ в текстовый файл, и это код, который я написал, но это не так
компиляции:

#include "rapidjson/prettywriter.h" // for stringify JSON
#include "rapidjson/writer.h"   // for stringify JSON
#include "rapidjson/filestream.h"   // wrapper of C stream for prettywriter as output
[...]
std::ifstream myfile ("c:\\statdata.txt");
rapidjson::Document document;
document.ParseStream<0>(myfile);

состояние ошибки компиляции: ошибка: «Документ» не является членом «rapidjson»

Я использую Qt 4.8.1 с mingw и rapidjson v 0.1 (я уже пробовал с обновленным v 0.11, но ошибка остается)

7

Решение

FileStream в @ Raanan ответ явно устарел. Там есть комментарий в исходном коде, который говорит, что использовать FileReadStream вместо.

#include <rapidjson/document.h>
#include <rapidjson/filereadstream.h>

using namespace rapidjson;

// ...

FILE* pFile = fopen(fileName.c_str(), "rb");
char buffer[65536];
FileReadStream is(pFile, buffer, sizeof(buffer));
Document document;
document.ParseStream<0, UTF8<>, FileReadStream>(is);
13

Другие решения

#include <rapidjson/document.h>
#include <rapidjson/istreamwrapper.h>
#include <fstream>

using namespace rapidjson;
using namespace std;

ifstream ifs("test.json");
IStreamWrapper isw(ifs);
Document d;
d.ParseStream(isw);

Пожалуйста, прочитайте документы в http://rapidjson.org/md_doc_stream.html .

10

Просто нашел этот вопрос после довольно похожей проблемы. Решение было бы использовать объект FILE *, а не ifstream вместе с собственным объектом FileStream quickjson (вы уже включили правильный заголовок)

FILE * pFile = fopen ("test.json" , "r");
rapidjson::FileStream is(pFile);
rapidjson::Document document;
document.ParseStream<0>(is);

Вам, конечно, нужно добавить файл document.h (он отвечает на ваш прямой вопрос, но не решит проблему в вашем случае, так как вы используете неправильный файловый поток):

#include "rapidjson/document.h"

Затем объект документа (довольно быстро, я бы добавил) заполняется содержимым файла. Надеюсь, поможет!

6
По вопросам рекламы [email protected]