это действительный yaml? - PullRequest
       13

это действительный yaml?

1 голос
/ 24 марта 2012
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

Какой из этих двух документов yaml действителен?Мне все еще интересно, могу ли я использовать такой список списков с ключами (вложенный список?):

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

Ответы [ 2 ]

4 голосов
/ 24 марта 2012

Вы можете использовать это, чтобы проверить, в порядке ли ваш yaml: yamlint

Кажется, все в порядке.

3 голосов
/ 24 марта 2012

Да, это действительный YAML (ну, первые два; в третьем, убедитесь, что у вас есть пробел после - в последовательностях);но это может не совсем то, что вы думаете.В вашем игрушечном примере

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

значение, связанное с items, является последовательностью;и каждая запись этой последовательности представляет собой карту с одной парой ключ / значение (для первой записи ключ - list1, а во второй - list2).

Что могло вас смущатьв вашем первом реальном примере было, как получить доступ к каждому элементу.Поскольку вы пометили это yaml-cpp, вот как вы можете получить, скажем, список игрушек в оранжерее вашего первого примера:

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

(обратите внимание на [0] перед тем, как получить доступ к «домику на дереве»и "игрушки" ключи.)

...