反復および抽出onclick
値:
void print_onclick_values(const ptree& node)
{
BOOST_FOREACH(const ptree::value_type& child,
node.get_child("menu.popup")) {
std::cout
<< "onclick: "
<< child.second.get<std::string>("onclick")
<< "\n";
}
}
機能プリント:
onclick: CreateNewDoc()
onclick: OpenDoc()
N.B.例から末尾のカンマを削除します。
{"value": "Open", "onclick": "OpenDoc()"},
あなたは、単一のget<string>(path)
またはget_child(path)
コールを使用して、配列の特定の子にアクセスすることはできません。 The manual says:同じキーが指定されていない選択された子を複数回、表示された場合
は、パスに応じて、各レベルで結果が、すなわち、完全に確定的ではないかもしれません。これにより、このパスの子孫があっても解決されないパスにつながる可能性があります。例:
a -> b -> c
-> b
パス「A.B.C」「B」の解像度が最初のようなノードを選択した場合に成功し、それは第二の選択した場合に失敗します。
JSON配列の要素はすべて、名前として空の文字列を持ちます。あなたは
void print_arbitrary_onclick_value(const ptree& node)
{
std::cout << node.get<std::string>("menu.popup..onclick") << "\n";
}
でonclick
値配列の要素にアクセスすることができますが、onclick
のアクセスが試行された要素のために知りません。
「onclick」と呼ばれるものが2つあります。あなたはどちらを使いたいのですか? –
これは今日Boost.PropertyTreeに関する3番目の質問です。それはかなりの[まともな文書](http://www.boost.org/doc/libs/1_46_1/doc/html/property_tree.html)を持っています。おそらくあなたはそれを読むべきです。 –
@Nicol - ちょっと皮肉なことに、OPの例は実際Boostのドキュメントです! http://www.boost.org/doc/libs/1_41_0/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.json_parser – Perception