使用 Jsoncpp 简单读取 json 文件
simple reading of a json file using Jsoncpp
如果我有一个 json 文件:
{
“键1”:“值1”,
“键2”:“值2”
}
使用:
Json::Value root;
Json::Reader reader;
std::ifstream in(filePath.c_str());
if (!in)
{
std::string errReason("Cannot open the settings file '");
errReason += filePath;
errReason += "'";
throw std::domain_error(errReason);
}
bool parsingSuccessful = reader.parse(in, root);
if (!parsingSuccessful)
{
std::cout << "Error parsing the string" << std::endl;
}
else
{
std::cout << "Works" << std::endl;
}
Json::Value::Members names = root.getMemberNames();
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index].asString();
std::string value = root[key].asString();
map_.insert(make_pair(key, value));
std::cout << root[index] << std::endl;
}
我似乎无法为变量字符串赋值 'key'。
谁能解释一下我做错了什么?
变量 'names' 的类型是 Json::Value::Members,它是字符串向量 (std::vector) 而不是 Json::Value , 所以你不必添加 asString() 方法。
所以如果要修改'root'中'key'值的内容:
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index];
root[key] = value ;
std::cout << root[key] << std::endl;
}
如果您只想读取 json 文件并将其值存储在地图中:
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index];
std::string value = root[key].asString();
map_.insert(make_pair(key, value));
std::cout << root[key] << std::endl;
}
如果我有一个 json 文件:
{ “键1”:“值1”, “键2”:“值2” }
使用:
Json::Value root;
Json::Reader reader;
std::ifstream in(filePath.c_str());
if (!in)
{
std::string errReason("Cannot open the settings file '");
errReason += filePath;
errReason += "'";
throw std::domain_error(errReason);
}
bool parsingSuccessful = reader.parse(in, root);
if (!parsingSuccessful)
{
std::cout << "Error parsing the string" << std::endl;
}
else
{
std::cout << "Works" << std::endl;
}
Json::Value::Members names = root.getMemberNames();
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index].asString();
std::string value = root[key].asString();
map_.insert(make_pair(key, value));
std::cout << root[index] << std::endl;
}
我似乎无法为变量字符串赋值 'key'。
谁能解释一下我做错了什么?
变量 'names' 的类型是 Json::Value::Members,它是字符串向量 (std::vector
所以如果要修改'root'中'key'值的内容:
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index];
root[key] = value ;
std::cout << root[key] << std::endl;
}
如果您只想读取 json 文件并将其值存储在地图中:
for (int index = 0; index < names.size(); ++index)
{
std::string key = names[index];
std::string value = root[key].asString();
map_.insert(make_pair(key, value));
std::cout << root[key] << std::endl;
}