首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在boost中迭代JSON ptree

在boost中迭代JSON ptree
EN

Stack Overflow用户
提问于 2013-10-29 11:48:33
回答 1查看 1.2K关注 0票数 0

在boost中迭代JSON ptree时,我需要一些帮助。这是结构。

代码语言:javascript
复制
{"drives": [{"busy": false, "eof": false, "density": 88 }]}

我想做的是打印钥匙和价值。忙=假。我试过下面的代码,但是没有输出。

代码语言:javascript
复制
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
}

那我怎么打印钥匙呢?

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-10-29 14:27:33

我翻看了一些旧代码,找到了方法

代码语言:javascript
复制
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”的键名:{“繁忙”:false,"eof":false,"density":88 }

它不存在,因为这个值是数组的一部分。

v.data() (如果我没有弄错的话)持有键:value,它是一个内部表示,不能以这种方式打印。

我真的认为您应该尝试为JSON使用不同的框架。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19657398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档