返回JSONDOC作为方法的参考

returning JsonDoc as a reference from a method

本文关键字:参考 方法 JSONDOC 返回      更新时间:2023-10-16

i具有以下方法,该方法将jsondoc作为参考

bool MyClass::jsonTest(rapidjson::Document & rjsonDoc)
{
    rjsonDoc.SetObject();
    rapidjson::Value val(rapidjson::kObjectType);
    val.AddMember("a", 1, rjsonDoc.GetAllocator());
    val.AddMember("b", 2, rjsonDoc.GetAllocator());
    val.AddMember("c", 3, rjsonDoc.GetAllocator());
    rjsonDoc.AddMember("Values", val, rjsonDoc.GetAllocator());
    //outputs the json into a file
    std::FILE* fp = fopen("outputjsonTest.json", "wb"); // non-Windows use "w"
    char writeBuffer[65536];
    rapidjson::FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer));
    rapidjson::Writer<rapidjson::FileWriteStream> writer(os);
    rjsonDoc.Accept(writer);
    fclose(fp);
    return false;
}

称为将完美的json写入文件outputjsontest.json

时,上述方法将

但是在调用另一类方法并将其写入文件中后,

rapidjson::Document d;
CData_BisconaCtrl dMan;
dMan.jsonTest(d);
//outputs the json into a file
        std::FILE* fp = fopen("outputruntest.json", "wb"); // non-Windows use "w"
char writeBuffer[65536];
rapidjson::FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer));
rapidjson::Writer<rapidjson::FileWriteStream> writer(os);
d.Accept(writer);
fclose(fp);

文件,outputruntest.json被证明是空白的。

看来我无法通过参考样式使用通行证来从方法中返回jsondocument。还是我犯了一个错误?是否可以以这种方式返回jsondocument?

我认为您的工作没有错。此外,我尝试运行您的代码,并且似乎对我有用。

也就是说,您应该注意,如果您尝试多次使用Writer(例如,要打印多个文档或第二次打印同一文档),则首先需要Reset()。它将停止在第一个文档的末尾产生输出,因此,如果您尝试打印第二个文档,它不会产生任何输出(因为结果不是法律json"文档")。

[编辑:]但是,您可以尝试询问它以查看其中的内容,而不是将对象倾倒到文件中。检查其类型,大小,容量;查看其是否具有预期成员,还是对其成员/参赛作品进行迭代;等等。我将尝试证明基本的C 东西在起作用。(即。

祝你好运!