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.很多问题。