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

这两个 yaml 文件中的哪一个是有效的?我仍然想知道我是否可以使用这样的键控列表列表(嵌套列表?):

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

2 回答 2

4

您可以使用它来检查您的 yaml 是否正常:yamlint

好像没问题

于 2012-03-24T10:42:59.047 回答
3

是的,它是有效的 YAML(嗯,前两个是;在第三个中,确保-序列中的后面有一个空格);但它可能不会完全按照你的想法做。在您的玩具示例中

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

关联的值items是一个序列;并且该序列的每个条目都是具有单个键/值对的映射(对于第一个条目,键是list1,而在第二个条目中,list2)。

在您的第一个真实示例中,您可能会感到困惑的是如何访问每个元素。既然你标记了这个yaml-cpp,下面是你如何得到你的第一个例子的温室里的玩具清单:

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

(注意[0]在访问“treehouse”和“toys”键之前。)

于 2012-03-24T15:57:18.357 回答