json

本文详细介绍了使用JsonCpp库进行JSON数据的读取、解析和写入操作。通过具体代码示例,展示了如何从JSON字符串中提取特定元素,以及如何构建并输出JSON对象。适合初学者了解JSON数据处理的基本流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 解析json
bool read(string content)
{
	//string temp;
	Json::Reader jReader;
	Json::Value root;

	// jReader将Json字符串解析到root,root将包含Json里所有子元素  
	if (!jReader.parse(content, root))
	{
		AfxMessageBox(_T("json 解析出错"));
		return false;
	}

	if (root["元素"].asString() != "1001")
	{
		
	}


	try
	{

		for (int i = 0; i < root["数组"].size(); ++i)
		{
			Json::Value& plan = root["数组"][i];

			if (plan.isNull())
			{
				break;
			}

			
			if (plan["元素"].isString())
			{
				string temp = plan["元素"].asString();
				CString strProductCode = UTF8ToGBK(temp.c_str());
			}

			..........
		}
	}
	catch (...)
	{
		AfxMessageBox(_T("解析出错"));
		return false;
	}

	return true;
}



bool write(string & a_data)
{
	// 数据存放在 vector中,

	// 建立一个跟节点
	// json::Value 是jsoncpp中最基本、最重要的类,用于表示各种类型的对象
	Json::Value json_temp;//临时对象,
	json_temp["name"] = Json::Value("zhangsan");
	json_temp["age"] = Json::Value(26);

	Json::Value json_temp2;//临时对象,
	json_temp2["name"] = Json::Value("lissi");
	json_temp2["age"] = Json::Value(26);

	Json::Value root;		// 表示整个json的对象
	root["key_string"] = Json::Value("Value_string");  
	//root["key_object"] = json_temp;

	root["key_object"].append(json_temp);	// 新建一个key为“key_object”, 类型为数组,对第一个元素赋值为json_temp2
	root["key_object"].append(json_temp2);

	root["numeber"] = Json::Value(2);
	root["error_type"] = Json::Value("No error");

	// Json::Writer 类是一个纯虚函数,它的子类:
	//Json::FastWriter  最快
	// Json::StyledWriter 格式化的Json
	// Json::StyledStreamWriter
	Json::FastWriter fast_writer;
	string strdata = fast_writer.write(root);

	CString show;
	show = strdata.data();
	OutputDebugString(show);

	// {"error_type":"No error","key_object":[{"age":26,"name":"lissi"},{"age":26,"name":"zhangsan"}],"key_string":"Value_string","numeber":2}

	return true;
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值