0

ブーストで JSON ptree を反復処理するときに助けが必要です。これが構造です。

{"drives": [{"busy": false, "eof": false, "density": 88 }]}

私がやりたいのは、キーと値を出力することです。忙しい=偽。以下のコードを試しましたが、出力がありません。

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
}

では、キーを印刷するにはどうすればよいでしょうか。

助けてくれてありがとう。

4

1 に答える 1

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() を出力しようとしましたが、これら 2 つは保持していると思われるデータを保持していません。

v.first は"KeyName" :{"busy": false, "eof": false, "density": 88 }のキー名を保持することになっています

この値は配列の一部であるため、存在しません。

v.data() (私が間違っていなければ) は key:value を保持します。これは内部プレゼンテーションであり、この方法で印刷することはできません。

JSON 用に別のフレームワークを使用してみる必要があると思います。

于 2013-10-29T14:27:33.313 に答える