在YAML文件中,是否可以在定义地图后将项目添加到地图中?
例如,如果我有一个文件:
fruits:
bananas:
quantity: 4
apples:
quantity: 2
grapes:
quantity: 37
vegetables:
lettuce:
quantity: 2
beets:
quantity: 4
然后意识到我的“水果”地图不完整,我可以稍后在文件中做什么(即在定义“蔬菜”地图之后)将另一个水果添加到现有地图中吗?在哪里:
fruits:
oranges:
quantity: 4
会被附加到现有地图而不是覆盖它吗?
换句话说,是否有一种有效的方法可以将“橙子”附加到文件中其他地方的现有“水果”地图上?
一些背景知识:我计划在C ++中使用yaml-cpp。我正在使用YAML作为我正在编写的程序的输入文件格式。我将解析用户创建的文件,并将结构转换为程序中的对象。我希望能够将项目附加到地图,因为对象(在此示例中为“水果”)通常散布在输入文件中,因为用户意识到需要它们或在引用它们的其他对象附近使用它们。 / p>
答案 0 :(得分:1)
重复密钥是无效的YAML。例如,以下是无效的YAML:
fruits: foo
fruits: bar
如果您的YAML文件以:
开头fruits: whatever
bar: baz
然后无法通过附加到文件来修改与键fruits
关联的值。不同的YAML解析器可能以自己的方式解释重复的键,但规范将其定义为错误。
如果需要,您可以对YAML文件进行后期处理,例如:
fruits1: whatever
bar: baz
fruits2: something else
然后在您的代码中,只需合并与fruits1
和fruits2
(以及fruits3
,...)相关联的值即可。