jsoncpp执行时错误: json test src lib json json value…

  2012-06-05


jsoncpp执行时错误:
json_test: src/lib_json/json_value.cpp:1025: Json::Value& Json::Value::resolveReference(const char*, bool): Assertion `type_ == nullValue || type_ == objectValue’ failed.

原因分析:
Jsoncpp解析非法json时,会自动容错成字符类型。对字符类型取下标时,会触发assert终止进程。

解决方法:
方案1 对Json::Value取下标前,先判断(value.type()==Json::objectValue)。
方案2 启用严格模式,让非法的json解析时直接返回false,不自动容错。
Json::Features f = Json::Features::strictMode();
Json::Reader reader(f);