大佬教程收集整理的这篇文章主要介绍了Jsoncpp的编解码---高级篇,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
只讲编解码两个字符串:
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 sridSELER_641_11845@ent; for(int j = 0;j < sridsArrary.size();j++) { sridSELER_641_11845@ent = sridsArrarY[j]; dataJson.rids = sridSELER_641_11845@ent.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 fridSELER_641_11845@ent; for(int q = 0;q < fridsArrary.size();q++) { fridSELER_641_11845@ent = fridsArrarY[q]; dataJson.rids = fridSELER_641_11845@ent.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 receipt vector<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 coding if(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 coding if(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 coding if((!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的编解码---高级篇全部内容,希望文章能够帮你解决Jsoncpp的编解码---高级篇所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。