0

在 YAML 文件中,是否可以在定义地图后将项目添加到地图中?

例如,如果我有一个文件:

fruits:
  bananas:
    quantity: 4
  apples:
    quantity: 2
  grapes:
    quantity: 37

vegetables:
  lettuce:
    quantity: 2
  beets:
    quantity: 4

然后后来意识到我的“水果”地图不完整,我可以稍后在文件中做任何事情(即在定义“蔬菜”地图之后)将另一个水果附加到现有地图吗?某处:

fruits:
  oranges:
    quantity: 4

将被附加到现有地图而不是覆盖它?

换句话说,是否有一种有效的方法将“橙子”附加到文件中其他地方的现有“水果”映射?

一些背景知识:我计划将 yaml-cpp 与 C++ 一起使用。我正在使用 YAML 作为我正在编写的程序的输入文件格式。我将解析用户创建的文件并将结构转换为程序中的对象。我希望能够将项目附加到地图,因为当用户意识到在引用它们的其他对象附近需要或使用它们时,对象(在本例中为“水果”)通常分散在输入文件中。

4

1 回答 1

1

具有重复密钥的 YAML 无效。例如,以下不是有效的 YAML:

fruits: foo
fruits: bar

如果您的 YAML 文件以:

fruits: whatever
bar: baz

那么就无法fruits通过附加到文件来修改与键关联的值。不同的 YAML 解析器可能会以自己的方式解释重复的键,但规范将其定义为错误。

如果需要,您可以对 YAML 文件进行后处理,例如:

fruits1: whatever
bar: baz
fruits2: something else

然后在您的代码中,只需将它们与fruits1and fruits2(and fruits3, ...) 关联的值合并为您喜欢的值。

于 2013-07-29T20:53:38.497 回答