由于之前没有查看JSONCPP的相关文档,直接使用了,在JSON没匹配时,老是导致程序崩溃,后来懒得查相关说明,直接写了几个简单例子验证一下,结果如下:
数组不能使用isString()等函数判断
如 [ { } { } ]
否则崩溃
需要先使用isObject()判断
以下情况,需先判断是否为数组,不然会崩溃
char t[] = "{\"a\":\"123\"}";
Json::Value json;
Json::Reader reader;
reader.parse(t, json);
json.size(); //返回1
for(int i=0; i<json.size(); i++)
{
json[i].isString(); //崩溃
}
"a":null
isArray()会返回true,
isString()返回false
asInt()返回0
asBool()返回false
asCString() 崩溃
当不存在成员时
isArray(); 返回 true
.isNull(); 返回 true
.isInt();返回 false
.isString(); 返回false
.isString(); 返回false
asInt()返回0
asBool()返回false
asCString() 崩溃
类型不同时解析会崩溃
长整形:
{"a":123123123123123123}
isArray(); 返回false
isNull(); 返回false
isInt();返回 false
isString(); 返回false
isString(); 返回false
isDouble(); 返回
true
value["a"].asBool();返回
true
value["a"].asDouble();返回正确数字
value["a"].asCString();崩溃
value["a"].asInt(); 崩溃
value["a"].asInt(); 崩溃