Rapidjson中返回null或空文档

Return null or empty Document in rapidjson

本文关键字:文档 null 返回 Rapidjson      更新时间:2023-10-16

我已经创建了一种解析char *的辅助方法。但是当某些事情失败时,我希望它返回诸如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("{}");

如果此代码可能频繁,并且不打算更改返回的文档(在这种情况下,您最好将函数的返回值更改为 const Document&(,则可能需要缓存您的上述表达式的结果申请,并根据需要返回。

更新:我可能错了,但是后来的RapidJson版本(至少当前稳定1.1.0(在不良文档上抛出异常,而不是标记错误变量。