Json库

选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库,在json官网也是首推的。下载地址是:http://sourceforge.net/projects/jsoncpp/。或者到http://download.csdn.net/detail/wklnewlife/4008660
注意: Json::Value只能处理ANSI类型的字符串,如果C++程序使用Unicode编码的,最好加一个Adapt类来适配。

实例:

void CJSONDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	//OnOK();

	//解析json字符串
	std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";
	
	Json::Reader reader;
	Json::Value value;
	if (reader.parse(strValue, value))
	{
		std::string out = value["name"].asString();
		AfxMessageBox(CString(out.c_str()));

		const Json::Value arrayObj = value["array"];
		for (unsigned int i=0;i<arrayObj.size(); i++)
		{
			if (!arrayObj[i].isMember("cpp"))
			{
				continue;
			}
			out = arrayObj[i]["cpp"].asString();
			AfxMessageBox(CString(out.c_str()));
		}
	}

	//序列化json对象
	Json::Value root;
	Json::Value arrayObj;
	Json::Value item;
	item["cpp"] = "jsoncpp";  
	item["java"] = "jsoninjava";  
	item["php"] = "support";  
	arrayObj.append(item);  
	root["name"] = "json";  
	root["array"] = arrayObj;  

	std::string out= root.toStyledString();  
	AfxMessageBox(CString(out.c_str()));
}

补充:具体sting和cstring转换详见《c/c++随笔》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值