Return rapidjson 中的空文档

Return null or empty Document in rapidjson

我创建了一个解析 char * 的辅助方法。但是当某些事情失败时,我希望它成为 return 一个像 Document 这样的空值。我将如何为 rapidjson 做这个? 例如,在 jsoncpp 他们有 Value::null.

Document & CEJsonHelper::parse(const char * inputString) {
    Document d;
    auto& document = d.Parse(inputString);

    if(document.HasParseError()){
        auto error = "Failed to parse JSON (offset " + std::to_string(d.GetErrorOffset()) + "). "
                "Error: " + GetParseError_En(document.GetParseError());
        Log(error);
        return Document::Null; //wrong
    }

    return document;
}

据我了解请求,您可以将最后一行更改为

return d.Parse("{}");

如果这段代码可能很频繁并且return编辑的文档不打算更改(在这种情况下你最好将函数的return值更改为const Document&) ,您可能希望将上述表达式的结果缓存在应用程序的某个位置,并根据需要 return。

更新: 另外,我可能是错的,但 RapidJson 的更高版本(至少当前稳定版 1.1.0)在错误文档上抛出异常而不是标记错误变量.