在rapidjson中返回null或空文档

时间:2017-05-29 21:44:38

标签: c++ rapidjson

我创建了一个解析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;
}

1 个答案:

答案 0 :(得分:3)

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

return d.Parse("{}");

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

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