我创建了一个解析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;
}
答案 0 :(得分:3)
据我了解该请求,您可以将最后一行更改为
return d.Parse("{}");
如果此代码可能频繁并且不打算更改返回的文档(在这种情况下,您最好将函数的返回值更改为const Document&
),您可能希望缓存上述结果表达式在应用程序的某处,并根据需要返回。
更新:另外,我可能错了,但RapidJson的后续版本(至少是当前的稳定1.1.0)会在坏文档上抛出异常而不是标记错误变量。