vc中json文件的读取、修改和添加字段的方法

前言:

  • 本代码涉及到对json文件的读取、修改和添加方法
  • WTL中radir button的状态判断和设置可选以及取消可选

示例:

所需头文件:
#include 
#include 

代码部分:
//读取下载线路在界面上的radir button中显示
void CMainDlg::read_download_line_from_cfg()
{
	std_string strDownloadLine;
	file_io<> json_file("c://test.json", "r"); //
	json_value<> json_values_data;
	if (json_parse(json_values_data, json_file))
	{
		strDownloadLine = json_values_data["deflink"].get_string(); //读取json文件中deflink字段的值
		if (strDownloadLine == "1")
		{	
			CButton btn; 
			btn.Attach(GetDlgItem(IDC_RADIO_ONE).m_hWnd); 
			btn.SetCheck(true);    //wtl中修改radir button状态的方法
			json_file.close();
		}
		else if(strDownloadLine == "2")
		{
			CButton btn;
			btn.Attach(GetDlgItem(IDC_RADIO_TWO).m_hWnd);
			btn.SetCheck(true);
			json_file.close();
		}
	}
}

//如果要修改json文件中的值,则需要先读取出来,然后使用json_pretty_write修改
void CMainDlg::update_cfg_config()
{
	file_io<> json_file("c://test.json", "r+");
	json_value<> json_values_data;
	if (json_parse(json_values_data, json_file))  //把json文件读取到json_values_data中
	{
		json_file.close();	
	}
	else
	{
		return;
	}

	bool isNeedUpate = json_values_data["flag"].is_string(); //判断flag字段是不是字符串(这儿用于判断flag字段是否存在)
	if (isNeedUpate)
	{
		return;
	}
	json_values_data["deflink"] = "ct";     //修改deflink字段为ct
	json_values_data["flag"] = "new";       //如果不存在flag,则添加flag字段
	json_values_data["notify"] = "http://www.baidu.com";  //添加notify字段
	file_io<> f_l_cfg("c://test.json", "w");
	json_pretty_write(f_l_cfg, json_values_data, "	"); //重新写入test.json文件中
	f_l_cfg.close(); //使用完后记得关闭文件
}

修改json里面数组内容

如修改下面cnc数组里面的内容
{ 
	"cnc" : { 
		"swver" : "1", 
		"upver" : "1"
	},  
	"debug" : true, 
	"flag" : 1, 
	"notify" : "1", 
	"version" : "1"
}

代码部分:
void update_json_config()
{
	file_io<> json_file("c://test.json", "r+");
	json_value<> json_values_data;
	if (json_parse(json_values_data, json_file))
		json_file.close();	
	else
		return;  //解析json文件失败,退出

	json_values_data["debug"] = false; //修改debug字段
	json_values_data["flag"] = 2;      //修改flag字段
	json_values_data["notify"] = "www.baidu.com;

	json_values_data["cnc"].set_object();  //修改cnc数组字段
	json_value<>& cons_cnc = json_values_data["cnc"];
	cons_cnc["upver"] = "testdata";  //修改cnc数组中upver字段
	cons_cnc["swver"] = "testdata";  //修改cnc数组中swver字段

	file_io<> f_l_cfg("c://test.json", "w"); //把json文件重新保存
	json_pretty_write(f_l_cfg, json_values_data, "	");
	f_l_cfg.close();
}



你可能感兴趣的:(C++,JSON)