第一种,头文件调用
#include<json.h>
Json::Value root;
Json::Reader reader;
const char* s = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";
if(!reader.parse(s, root))
{
// "parse fail";
}
else
{
cout<<"uploadid "<<root["uploadid"].asString()<<endl; //uploadid UP000000
cout<<"uploadid "<<root["uploadid"]<<endl; //uploadid "UP000000"
cout <<"code " <<root["code"].asInt()<<endl;//code 100
cout<<"files "<<root["files"].asString()<<endl;//files
string str1 = root["uploadid"].asString(); //正确
string str2 = root["uploadid"]; //错误,不存在用户定义的从 "Json::Value" 到 "std::string" 的适当转换
}
Json::Value root;
Json::Reader reader;
string str = "{\"result\":{\"result_data\":\"f30d16915ce8d972eac64a8251937433fb1c729b5\",\"ret_msg\":\"已完成\",\"request_id\":\"11658933_431705\",\"percent\":100,\"ret_code\":3},\"log_id\":153481671081840}";
reader.parse(str, root);
string result = root["result"].toStyledString();
cout<<"result: "<<result<<endl;
/*输出
result: {
"percent" : 100,
"request_id" : "11658933_431705",
"result_data" : "f30d16915ce8d972eac64a8251937433fb1c729b5",
"ret_code" : 3,
"ret_msg" : "已完成"
}*/
cout<<endl;
cout<<"_________________________________________________"<<endl;
cout<<"result_data: "<<root["result"]["result_data"];
cout<<"ret_msg: "<<root["result"]["ret_msg"];
cout<<"request_id: "<<root["result"]["request_id"];
cout<<"percent: "<<root["result"]["percent"];
cout<<"ret_code: "<<root["result"]["ret_code"];
cout<<"_________________________________________________"<<endl;
/*输出
result_data: "f30d16915ce8d972eac64a8251937433fb1c729b5"
ret_msg: "已完成"
request_id: "11658933_431705"
percent: 100
ret_code: 3
*/
第二种,头文件调用
#include <document.h>
using namespace rapidjson;
string str = "{\"result\":{\"result_data\":\"f30d16915ce8d972eac64a8251937433fb1c729b5\",\"ret_msg\":\"已完成\",\"request_id\":\"11658933_431705\",\"percent\":100,\"ret_code\":3},\"log_id\":153481671081840}";
Document dom;
dom.Parse(str.c_str());
if(dom.HasParseError())
{
return -3;//参数错误
}
__int64 log_id = dom["log_id"].GetInt64();
cout<<"log_id: "<<log_id<<endl; //log_id: 153481671081840
Value &result = dom["result"];
size_t percent = result["percent"].GetInt();//输出正确
string result_data = result["result_data"].GetString();
cout<<"percent: "<<percent<<endl; //percent: 100
cout<<"result_data: "<<result_data.c_str()<<endl; //result_data: f30d16915ce8d972eac64a8251937433fb1c729b5