我需要了解并修改示例代码。我陷入困境,无法找到任何解决方案。这是代码:
void foo(std::istream& input)
{
using boost::property_tree::ptree;
ptree pt;
boost::property_tree::read_json(input, pt);
BOOST_FOREACH(ptree::value_type &node, pt.get_child("some_nodes"))
{
std::string id;
unsigned int number1;
bool flag1;
bool flag2;
id = node.second.get<std::string>("id");
number1 = node.second.get<unsigned int>("number1");
flag1 = node.second.get<bool>("flag1");
flag2 = node.second.get<bool>("flag2");
}
}
有人可以告诉我'第二'在这里意味着什么吗?
以下是程序读取的JSON示例:
{
"some_nodes" :
[
{
"id" : "vader",
"number1" : "1024",
"flag1" : "false",
"flag2" : "true",
},
{
"id" : "anakin",
"number1" : "4096",
"flag1" : "true",
"flag2" : "true",
}
]
}
还有一个问题,我在尝试编译代码时也遇到以下错误。这意味着什么,我该如何解决?
Invalid arguments '
Candidates are:
boost::foreach_detail_::foreach_reference<#0,#1>::type deref(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *)
'
非常感谢。
答案 0 :(得分:1)
ptree :: value_type以这种方式定义:
typedef std::pair< const Key, self_type > value_type;
所以它只是一个std ::对。 JSON的根节点是数组“some_nodes”。 当您迭代属性树时,您将遍历所有“some_nodes”子节点。