Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。