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

これがこのドキュメントの別の試みです、それは複合リストを持っていません(私はそれがそれが呼ばれる方法だと思います)。

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

これら2つのyamlドキュメントのどちらが有効ですか?そのようなキー付きリストのリスト(ネストされたリスト?)を使用できるかどうかはまだ疑問です:

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

2 に答える 2

4

これを使用して、yamlに問題がないかどうかを確認できます:yamlint

大丈夫そうです。

于 2012-03-24T10:42:59.047 に答える
3

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

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

関連付けられている値itemsはシーケンスです。そのシーケンスの各エントリは、単一のキーと値のペアを持つマップです(最初のエントリの場合、キーは、、list12番目のエントリの場合はlist2)。

最初の実際の例で混乱したのは、各要素にアクセスする方法でした。これにタグを付けたのでyaml-cpp、たとえば、最初の例の温室にあるおもちゃのリストを取得する方法は次のとおりです。

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

[0]( 「樹上の家」と「おもちゃ」のキーにアクセスする前に注意してください。)

于 2012-03-24T15:57:18.357 に答える