我不确定这是否是 jsoncpp 的特定事物,或者是如何使 C++ 库表现更好的一般范例。基本上我得到了这个跟踪:
imagegeneratormanager.tsk: src/lib_json/json_value.cpp:1176: const Json::Value& Json::Value::operator[](const char*) const: Assertion `type_ == nullValue || type_ == objectValue' failed.
当输入不好时会发生这种情况。当输入(通过 memcached 来自我的另一个应用程序)发生错误时,我想处理此错误。你知道,优雅地。可能类似于“错误:项目 15006 的输入错误”进入日志。不会使我的整个 JSON 字符串处理任务崩溃。
这只是一个写得不好的库还是可以更巧妙地配置它?
编辑:这是一些调用代码:
Json::Value root;
Json::Reader reader;
succeeded = reader.parse(jsonString, root);
if(!succeeded) {
throw std::runtime_error(std::string("Failed to parse JSON for key ") + emailInfoKey.str());
}
std::string userEmail = root.get("userId", "").asString();
std::string bodyFilePath = root.get("bodyFilePath", "").asString();
std::string msgId = root.get("msgId", "").asString();