2012-03-24 30 views
1
items: 
    house: 
     - bathroom: 
      - toothbrush 
      - soap 
     - bedroom: 
      - bed: 
       - pillow 
       - sheet 
      - closet: 
       - clothes: 
        - underwear 
        - socks 
    garden: 
     - treehouse: 
      - toys: 
       - nerfgun 
       - car 
      - window 

     - garage: 
      - car 
      - toolbox: 
       - hammer 
       - scewdriver 
       - pliers 
      - lawnmower 

このドキュメントでもう1回試してみると、複合リストはありません(私はそれがどのように呼ばれているかと思います)。は有効なyamlですか?

items2: 
    house: 
     - bathroom: 
      - toothbrush 
      - soap 
     - bedroom: 
      - bed: 
       - pillow 
       - sheet 
      - closet: 
       - clothes: 
        - underwear 
        - socks 

どのyaml文書が有効ですか?私はそのようなキー付きリストのリストを使用できるかどうか私はまだ思ったんだけど(ネストされたリストを?):

items: 
    - list1: 
     -itemA 
     -itemB 
    - list2: 
     -itemC 
     -itemD 
+0

それは有効なyamlですが、それは私がそれができると思ったことをしていません – jokoon

答えて

4

あなたはあなたのYAMLがOKであるかどうかを確認するためにこれを使用することができます:それはyamlint

はOKらしいです。

+0

ダッシュの後に改行を入れた理由は分かりません。 – jokoon

+0

私はどちらもいいです。多分プレゼンテーションのために?とにかくあなたのyamlはまだ有効です。 – Vodun

3

はい、有効なYAMLです(最初の2つはあります; 3番目には、-の後に空白があることを確認してください)。しかし、それはあなたが思うものを正確に行うことはできません。おもちゃの例で

items: 
    - list1: 
     - itemA 
     - itemB 
    - list2: 
     - itemC 
     - itemD 

itemsに関連付けられた値はシーケンスです。そのシーケンスの各エントリは、単一のキーと値のペアを持つマップです(最初のエントリでは、キーはlist1、次にはlist2)。

最初の実際の例であなたを混乱させるかもしれないものは、各要素にアクセスする方法でした。

doc["items"]["garden"][0]["treehouse"][0]["toys"]; 

(「ツリーハウス」や「おもちゃ」のキーにアクセスする前に[0]を注:このyaml-cppをタグ付けするので、ここであなたは、あなたの最初の例の温室でおもちゃのリストを取得言う方法です。 )

関連する問題