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)在错误文档上抛出异常而不是标记错误变量.
我创建了一个解析 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)在错误文档上抛出异常而不是标记错误变量.