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
答案 0 :(得分:4)
您可以使用它来检查您的yaml是否正常:yamlint
看起来没问题。
答案 1 :(得分:3)
是的,它是有效的YAML(嗯,前两个是;在第三个中,确保在序列中-
之后有空格);但它可能不完全符合您的想法。在你的玩具示例中
items:
- list1:
- itemA
- itemB
- list2:
- itemC
- itemD
与items
相关联的值是一个序列;并且该序列的每个条目都是具有单个键/值对的映射(对于第一个条目,键为list1
,在第二个条目中为list2
)。
在您的第一个真实示例中可能让您困惑的是如何访问每个元素。既然你标记了这个yaml-cpp
,那么你可以在第一个例子的温室里找到玩具清单:
doc["items"]["garden"][0]["treehouse"][0]["toys"];
(在访问“树屋”和“玩具”键之前请注意[0]
。)