在boost中迭代JSON ptree时我需要一些帮助。这是结构。
{"drives": [{"busy": false, "eof": false, "density": 88 }]}
我想要做的是打印关键和值,例如。 busy = false。我已经尝试过以下代码,但没有输出。
BOOST_FOREACH(ptree::value_type &v, pt.get_child("drives"))
{
cout << v.first << endl; // does not work
cout << v.second.data() << endl; // does not work
cout << v.second.get<string>("busy"); // works
}
那么如何打印密钥?
提前感谢您的帮助。
答案 0 :(得分:0)
我经历了一些旧代码,我找到了方法
BOOST_FOREACH(ptree::value_type &v, pt.get_child("drives"))
{
for(auto iter = v.second.begin(); iter!= v.second.end(); ++iter)
{
std::cout << iter->first << " : " << iter->second.get_value<std::string>() << std::endl;
}
}
如果你有多个“驱动器”,你只需要遍历“驱动器”,并且在你的json示例中你没有。
在您的代码中,您尝试打印v.first和v.data(),但这两个不包含您认为它们持有的数据。
v.first应该持有“KeyName”的密钥名称:{“busy”:false,“eof”:false,“density”:88}
不存在,因为此值是数组的一部分。
v.data()(如果我没弄错的话)持有键:值是一个内部表示,不能以这种方式打印。
我真的认为你应该尝试使用不同的JSON框架。