JSON&C++操作

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

JSON&C++操作

特点

  • 比txt等纯文本更有结构性
  • 比表格等文件更轻便
  • JSON 规定字符集是UTF-8
  • 对象用{ },数组用[ ]

从字符串中读取

void readStrToJson()
{
	string strValue = "xxxxxxxxxxxxxxx";//待读取字符串
	Json::Reader reader;
	Json::Value value;
	if (reader.parse(strValue, value))
	{
		Json::Value out = value["名称"].asString();
		---相关操作---
	}
}
 

Value:是jsoncpp 中最基本、最重要的类,用于表示各种类型的对象,jsoncpp 支持的对象类型可见
Json::ValueType 枚举值;
Value类的对象代表一个JSON值,既可以代表一个文档,也可以代表 文档中一个值。

从文件读取

void readFileToJson()
{
	Json::Reader reader;
	Json::Value root;
 
	//从文件中读取,保证当前文件有demo.json文件  
	ifstream in("demo.json", ios::binary);
 
	if (!in.is_open())
	{
		cout << "Error opening file\n";
		return;
	}
	if (reader.parse(in, root))
	{
		//此时root可视为根	
		//通过对象名称继续访问对象	  
		Json::Value out = value["名称"];
		//读取子节点信息  
		Json::Value out_1 = root["名称"]["名称"]
		//读取数组信息  
		for (unsigned int i = 0; i < root["名称"].size(); i++)
		{
			string str = root["hobby"][i].asString();
		}
	}
	else
	{
		cout << "parse error\n" << endl;
	}
 
	in.close();
}

写JSON文件

思路就是,构建出整个JSON根对象,赋好值,然后通过Writer写入文件就好

	Json::FastWriter fw;
		ofstream os;
		os.open("xxxx.json", std::ios::out | std::ios::app);
		if (!os.is_open())
			cout << "error:can not find or create the file which named \" xxx.json\"." << endl;
		os << fw.write(root);
		os.close();

其中,fw为直接写入方式,另外还有缩进写入,root为构建好的根对象

总而言之,

将一个JSON根对象视作一张表,通过reader打开这个表,
value可以是这张表里的一个元组或一个属性或一个元素,统称为一个对象,通过[“名称”]访问不同子对象,通过[序号]遍历数组,
writer则用来写入

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值