Jsoncpp的编解码---高级篇
来源:互联网 发布:淘宝美工的发展前景 编辑:程序博客网 时间:2024/05/22 08:26
只讲编解码两个字符串:
strValue0 = "{\"status\":\"success\",\"success_ids\":[{\"msgid\":\"123\",\"rids\":[\"10000015f33d3831\"]}]}";
strValue1 = "{\"failed_ids\":[{\"error_code\":\"401\",\"msgid\":\"efg\",\"rids\":[\"30000015f33d3831\"]}]}";
程序中要用到一些结构体和容器:struct data{string status;string msgid;string rids;string errcode;};vector<data> succVec分别解出字符串中的成员。编写的字符串为:{"failed_ids":[{"error_code":"400","msgid":"abc","rids":["20000015f33d3831"]},{"error_code":"401","msgid":"efg","rids":["30000015f33d3831"]},{"error_code":"402","msgid":"hij","rids":["40000015f33d3831"]}],"status":"success","success_ids":[{"msgid":"123","rids":["10000015f33d3831"]},{"msgid":"456","rids":["10000015f33d3832"]},{"msgid":"789","rids":["10000015f33d3833"]}]}解码编码程序:
void decodeJson(const string& str,data& dataJson){Json::Reader reader;Json::Value root;if(reader.parse(str,root)){if(!root["status"].empty()){dataJson.status = root["status"].asString();}if(!root["success_ids"].empty()){Json::Value sidsArrary = root["success_ids"];for(int i = 0;i < sidsArrary.size();i++){if(!sidsArrary[i]["rids"].empty()){dataJson.msgid = sidsArrary[i]["msgid"].asString();}if(!sidsArrary[i]["rids"].empty()){Json::Value sridsArrary = sidsArrary[i]["rids"];if(sridsArrary.isArray()){Json::Value sridselement;for(int j = 0;j < sridsArrary.size();j++){sridselement = sridsArrary[j];dataJson.rids = sridselement.asString();}}}}}if(!root["failed_ids"].empty()){Json::Value fidsArrary = root["failed_ids"];for(int p = 0;p < fidsArrary.size();p++){if(!fidsArrary[p]["msgid"].empty()){dataJson.msgid = fidsArrary[p]["msgid"].asString();}if(!fidsArrary[p]["error_code"].empty()){dataJson.errcode = fidsArrary[p]["error_code"].asString();}if(!fidsArrary[p]["rids"].empty()){Json::Value fridsArrary = fidsArrary[p]["rids"];if(fridsArrary.isArray()){Json::Value fridselement;for(int q = 0;q < fridsArrary.size();q++){fridselement = fridsArrary[q];dataJson.rids = fridselement.asString();}}}}}}}void encodeJson(vector <data>& dataVec, string& strRet){data dataJson;vector<data> succVec;vector<data> failVec;Json::Value succRoot,failRoot;Json::FastWriter writer;//Classify the message receipt : Successful receipt & Failful receiptvector<data>::iterator iter; for (iter = dataVec.begin();iter != dataVec.end();iter++) { dataJson = *iter;if(!dataJson.status.compare("success")){succVec.push_back(dataJson);}else{failVec.push_back(dataJson);} } //Successful receipt codingif(0 < succVec.size()){ for (int i = 0;i < succVec.size();i++) {Json::Value sidsArrary;sidsArrary["msgid"] = succVec[i].msgid;sidsArrary["rids"].append(succVec[i].rids);succRoot["success_ids"].append(sidsArrary);succRoot["status"] = succVec[i].status; }}//Failful receipt codingif(0 < failVec.size()){ for (int i = 0;i < failVec.size();i++) {Json::Value fidsArrary;fidsArrary["error_code"] = failVec[i].errcode;fidsArrary["msgid"] = failVec[i].msgid;fidsArrary["rids"].append(failVec[i].rids);failRoot["failed_ids"].append(fidsArrary); }}//Integrated codingif((!succRoot.empty()) && (!failRoot.empty())){succRoot["failed_ids"] = failRoot["failed_ids"];strRet = writer.write(succRoot);}else if((!succRoot.empty()) && failRoot.empty()){strRet = writer.write(succRoot);}else if(succRoot.empty() && (!failRoot.empty())){strRet = writer.write(failRoot);}}
- Jsoncpp的编解码---高级篇
- Java的编解码
- Http的编解码
- url的编解码
- 视频压缩:H.264、VC-1 及其他高级编解码技术的系统考虑zz
- X509证书的编解码
- 视频编解码的基本概念
- Base64的编解码方法
- jpg图像的编解码
- asterisk的编解码转换
- openmax 编解码的实现
- Python的编解码问题
- 图片的base64编解码
- URI的编解码方法
- base64的编解码问题
- base64编解码的类
- base64的编解码函数
- g729编解码的总结
- nutch 分布式部署 自测
- Qt for Windows 安装与配置
- Csharp:The .dat File using BinaryReader and BinaryWriter Convert to DataTable
- Oracle Database 11g 电子书收集
- linux crontab详解
- Jsoncpp的编解码---高级篇
- Oracle Rman 命令详解(List report backup configure)
- SUID和SGID的详细解析
- Android键盘操作的函数:onKeyDown, onKeyUp, on, onKeyMultiple
- 串口通讯摘要(转)
- A记录,子域名,CNAME,MX,TXT,SRV
- 关键字static的用法
- 获得eclipse发布的web项目WEB-INFO下的路径(最淳朴的方法)
- Python库世界收集