最近在做一个项目用到了json,测试人员发过来的请求不符合JSON格式,之后我的系统就挂了。呵呵。
原因分析:
Jsoncpp解析非法json时,会自动容错成字符类型。对字符类型取下标时,会触发assert终止进程。
后来查了查,可以通过下面两种方式解决:
方案1 对Json::Value取下标前,先判断(value.type()==Json::objectValue)。
方案2 启用严格模式,让非法的json解析时直接返回false,不自动容错。
Json::Features f = Json::Features::strictMode();
Json::Reader reader(f);
我也是参考的网上的资料。