在 YAML 文件中,是否可以在定义 map 后向 map 添加项目?
例如,如果我有一个文件:
fruits:
bananas:
quantity: 4
apples:
quantity: 2
grapes:
quantity: 37
vegetables:
lettuce:
quantity: 2
beets:
quantity: 4
后来意识到我的“水果” map 不完整,我可以稍后在文件中做任何事情(即在定义“蔬菜” map 之后)以将另一个水果附加到现有 map 吗?某处:
fruits:
oranges:
quantity: 4
会附加到现有 map 而不是覆盖它吗?
换句话说,是否有一种有效的方法可以将“oranges”附加到文件中其他位置的现有“fruits”映射?
一些背景知识:我计划在 C++ 中使用 yaml-cpp。我正在使用 YAML 作为我正在编写的程序的输入文件格式。我将解析用户创建的文件并将结构转换为我程序中的对象。我希望能够将项目附加到 map ,因为当用户意识到需要或在引用它们的其他对象附近使用它们时,对象(在本例中为“水果”)分散在输入文件中是很常见的。
最佳答案
具有重复 key 的 YAML 无效。例如,以下是无效的 YAML:
fruits: foo
fruits: bar
如果您的 YAML 文件以:
fruits: whatever
bar: baz
那么就无法通过附加到文件来修改与键 fruits
关联的值。不同的 YAML 解析器可能会以自己的方式解释重复的键,但规范将其定义为错误。
如果需要,您可以对 YAML 文件进行后处理,例如:
fruits1: whatever
bar: baz
fruits2: something else
然后在您的代码中,只需将它们与 fruits1
和 fruits2
(以及 fruits3
,...)关联的值合并.
关于c++ - 在 YAML 文件中将项目附加到 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931927/