c++读取JSON格式的配置文件——jsoncpp库+输入输出流

文章目录

      • 构造Json::Value对象
      • 访问Json::Value的值
      • 检查Json::Value的类型
      • 迭代Json::Value对象

原理:通过读取配置文件中的数据,然后使用jsoncpp的库,以json的格式读取得到文件中的参数。

还需要的库:#include //读写文件 c++标准库#include jsoncpp库

// 使用输入输出流读取json文件以二进制的形式读取
	std::fstream ifs;
	ifs.open("./a.json", std::ios::binary | std::ios::in);
	if (!ifs.is_open()) {
		cerr << "文件打开错误";
	}
// 读取到的二进制文件 调用jsoncpp读取其中的数据
	Json::Reader reader;
	Json::Value root;

	if (reader.parse(ifs, root))
	{
		// 已经将读取到文本文档存入到Json::Value root对象中了
		// Json::Value 类型的对象进行
		
	}
	ifs.close();
  • Json::Reader是一个用于解析JSON数据的类。使用该类可以将JSON字符串解析为Json::Value对象或其他相关数据结构
  • Json::Reader类中的parse方法用于将JSON文本解析为Json::Value对象

Json::Value是Jsoncpp库中的一个类,用于表示JSON数据的值。它可以表示各种类型的JSON数据,包括对象、数组、字符串、整数、浮点数和布尔值。

以下是Json::Value类的一些常见用法:

构造Json::Value对象

Json::Value value;  // 默认构造一个空的Json::Value对象

Json::Value objectValue(Json::objectValue);
objectValue["key"] = "value";  // 创建一个包含键值对的对象

Json::Value arrayValue(Json::arrayValue);
arrayValue.append(1);
arrayValue.append(2);
arrayValue.append(3);  // 创建一个包含元素的数组

Json::Value stringValue("hello");  // 创建一个字符串值
Json::Value intValue(42);  // 创建一个整数值
Json::Value floatValue(3.14);  // 创建一个浮点数值
Json::Value boolValue(true);  // 创建一个布尔值

访问Json::Value的值

Json::Value value;
value["key"] = "value";

std::string strValue = value["key"].asString();
int intValue = value["key"].asInt();
float floatValue = value["key"].asFloat();
bool boolValue = value["key"].asBool();

检查Json::Value的类型

Json::Value value;
value["key"] = "value";

if (value.isString()) {
    // 处理字符串类型
}

if (value.isInt()) {
    // 处理整数类型
}

if (value.isFloat()) {
    // 处理浮点数类型
}

if (value.isBool()) {
    // 处理布尔类型
}

迭代Json::Value对象

Json::Value value;
value["key1"] = "value1";
value["key2"] = "value2";
value["key3"] = "value3";

for (auto it = value.begin(); it != value.end(); ++it) {
    const std::string& key = it.key().asString();
    const std::string& value = (*it).asString();
    // 处理键值对
}

这些仅是Json::Value类的一些常见用法。有关更多信息,请参阅Jsoncpp库的文档。

你可能感兴趣的:(C++,c++,json,开发语言,配置文件)