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

前言:

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

示例:

所需头文件:
#include <json.h>
#include <file_io.h>

代码部分:
//读取下载线路在界面上的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(); //使用完后记得关闭文件
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。