MFC下 Json为啥解析不了如下一个字符串
MFC下 Json为何解析不了如下一个字符串
json = "[{"k1":1,"k2":3,"k3":4,"k4":0},{"k1":"usb 5.0 pre","k2":"3.3","k3":"04-08-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=23"},{"k1":"lkk","k2":"8","k3":"02-10-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=26"},{"k1":"realtek high definition audio","k2":"6.0.1.7246","k3":"29-09-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=27"}]"
首先该json格式在json校验成功;
然后在
if (reader.parse(s, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
// std::string upload_id = root.asString(); // 访问节点 //在此崩溃
std::string code = root["k1"].asString(); // 访问节点 //在此崩溃
int image_size = root.size();
for(int j = 0; j < image_size; ++j)
{
std::string type = root[j]["k1"].asString(); //在此崩溃
}
}
工程为UNICODE格式
help...................................
小弟就只有这点分了
------解决思路----------------------
if (reader.parse(s, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string upload_id = root.toStyledString();
if(!root.isMember("k1") && !root["k1"].isString()) //
return ; //
std::string code = root["k1"].asString(); // 访问节点 //在此崩溃
}
k1是int。不能asString.
root。是array对象吧,不能asstring.很多问题。
json = "[{"k1":1,"k2":3,"k3":4,"k4":0},{"k1":"usb 5.0 pre","k2":"3.3","k3":"04-08-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=23"},{"k1":"lkk","k2":"8","k3":"02-10-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=26"},{"k1":"realtek high definition audio","k2":"6.0.1.7246","k3":"29-09-2014","k4":"http:\/\/192.168.1.63\/drp.php?dr_id=27"}]"
首先该json格式在json校验成功;
然后在
if (reader.parse(s, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
// std::string upload_id = root.asString(); // 访问节点 //在此崩溃
std::string code = root["k1"].asString(); // 访问节点 //在此崩溃
int image_size = root.size();
for(int j = 0; j < image_size; ++j)
{
std::string type = root[j]["k1"].asString(); //在此崩溃
}
}
工程为UNICODE格式
help...................................
小弟就只有这点分了
------解决思路----------------------
if (reader.parse(s, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string upload_id = root.toStyledString();
if(!root.isMember("k1") && !root["k1"].isString()) //
return ; //
std::string code = root["k1"].asString(); // 访问节点 //在此崩溃
}
k1是int。不能asString.
root。是array对象吧,不能asstring.很多问题。