如何在YAML中将数组覆盖为空

时间:2016-12-17 23:47:57

标签: yaml yaml-cpp

假设我有一个带有对象数组的YML文件original.yml

array_in_yml:
- start: 1
- middle: 2
- end: 3

我将它包含在modified.yml

!include "original.yml" 
array_in_yml: []

我在加载modified.yml时期望这个数组为空,但它似乎有3个值为original.yml。如何强制/覆盖数组为空?

1 个答案:

答案 0 :(得分:0)

关于!include的讨论似乎与实际问题略有不同。我们假设以某种未知的方式将!include行替换为original.yml中的内容。我们会:

array_in_yml:
- start: 1
- middle: 2
- end: 3
array_in_yml: []

这不是有效的YAML,因为字典中的每个键都必须是唯一的,但是您使用键array_in_yml两次。您的YAML处理器可能会忽略这一点,只需将第一个值(即三个项目的序列)分配给键array_in_yml

现在重要的部分: YAML无法修改先前给定的值。您不能覆盖之前给定的值。你想要做的是在YAML规范之外,你需要一些合并工具为你做这样的替换。