5

Boost jsonパーサーを介して解析し、それをブーストプロパティツリーに保存してすべてのキー値ペアを取得したサンプルjsonレコードがあります。次のコードでは、ツリーの最初の属性を取得できますが、2番目の属性値を取得するにはどうすればよいですか?取得しようとすると、「そのようなノードはありません」という例外が表示されます。

ツリーを繰り返すと、すべてのキーが表示されます。何が問題なのかわかりません。参照:http ://www.boost.org/doc/libs/1_52_0/doc/html/boost_propertytree/accessing.html

json string := {"type":"net.aggregate","post.source":"1209010340", "val":1000}

コード:

boost::property_tree::ptree pt;    
read_json("jSon string object", pt);
cout << pt.get("type", ""); // working
cout <<  pt.get("post.source", "") // showing error ....`
4

2 に答える 2

7

プロパティ名にはドットが含まれているため、別の区切り文字を使用する必要があります。この場合、次のようになります。

cout << pt.get(ptree::path_type("post.source", '/'), "");

それを説明するBoostドキュメントセクション

于 2013-03-29T15:30:36.780 に答える
1

Boostproperty_treeはドットを使用してさまざまなオブジェクトを分離するためです。リクエスト"post.source"すると、get関数はプロパティを持つオブジェクト postを探します。 source

于 2012-11-29T11:40:20.300 に答える