如何在YAML中将数组重写为空

如何在YAML中将数组重写为空,yaml,yaml-cpp,Yaml,Yaml Cpp,假设我有一个YML文件origing.YML和一个对象数组 array_in_yml: - start: 1 - middle: 2 - end: 3 我把它包括在modified.yml中 !include "original.yml" array_in_yml: [] 当我加载modified.yml时,我希望这个数组是空的,但它似乎有3个值作为original.yml。如何强制/重写数组为空?关于的讨论!include似乎有点偏离实际问题。让我们假设以某种未知的方式,!include

假设我有一个YML文件origing.YML和一个对象数组

array_in_yml:
- start: 1
- middle: 2
- end: 3
我把它包括在modified.yml中

!include "original.yml" 
array_in_yml: []

当我加载modified.yml时,我希望这个数组是空的,但它似乎有3个值作为original.yml。如何强制/重写数组为空?

关于
的讨论!include
似乎有点偏离实际问题。让我们假设以某种未知的方式,
!include
行被替换为
original.yml
中的内容。我们会:

array_in_yml:
- start: 1
- middle: 2
- end: 3
array_in_yml: []
这不是有效的YAML,因为字典中的每个键都必须是唯一的,但您在yml中使用键
array\u两次。YAML处理器可能会忽略这一点,只需将第一个值(由三个项目组成的序列)分配给\u yml
中的键
数组


现在重要的一点是:在YAML中没有办法修改以前给定的值。不能使用其他值替代以前给定的值。您想做的事情超出了YAML规范,您需要一些合并工具来为您进行此类替换。

关于
的讨论!include
似乎有点偏离实际问题。让我们假设以某种未知的方式,
!include
行被替换为
original.yml
中的内容。我们会:

array_in_yml:
- start: 1
- middle: 2
- end: 3
array_in_yml: []
这不是有效的YAML,因为字典中的每个键都必须是唯一的,但您在yml中使用键
array\u两次。YAML处理器可能会忽略这一点,只需将第一个值(由三个项目组成的序列)分配给\u yml
中的键
数组


现在重要的一点是:在YAML中没有办法修改以前给定的值。不能使用其他值替代以前给定的值。您想要做的事情超出了YAML规范,您需要一些合并工具来为您进行此类替换。

您实际使用的是
YAML cpp
?我认为它不支持
!包括
特性,所以我会惊讶地发现它加载了3个值。如果是,请发布显示问题的工作源代码。
modified.yml
不是有效的YAML文件,不能同时使用标量字符串
“original.yml”
标记
!在文件的顶层包含
,以及指示映射的键值对(
array\u in\u yml:[]
)。您应该包含一个最小的工作程序来显示您看到的内容。您的
original.yml
文件没有对象数组。在顶层,它有一个映射,有一个键值对。值是一个序列,其中所有元素都是映射,每个元素都有一个键值对。没有数组,也没有对象。@Anthon,有一个顶级对象,其属性为
array\u in\u yml
-
连字符开始一个新的数组元素。因此_yml
中属性
array_的值是一个由三个对象组成的数组,每个对象都有一个属性。@TedEpstein YAML文档由(映射和序列)和组成。我在那里没有看到任何对象、数组等。您似乎混淆了在编程语言中加载的YAML文件表示的术语。这就像将HTML文件中的
称为Aardvark(而不是标记),只是因为您的编程语言将其加载到这样的beast中。如果不是更糟的话,也是令人困惑的。您实际使用的是
yaml cpp
?我认为它不支持
!包括
特性,所以我会惊讶地发现它加载了3个值。如果是,请发布显示问题的工作源代码。
modified.yml
不是有效的YAML文件,不能同时使用标量字符串
“original.yml”
标记
!在文件的顶层包含
,以及指示映射的键值对(
array\u in\u yml:[]
)。您应该包含一个最小的工作程序来显示您看到的内容。您的
original.yml
文件没有对象数组。在顶层,它有一个映射,有一个键值对。值是一个序列,其中所有元素都是映射,每个元素都有一个键值对。没有数组,也没有对象。@Anthon,有一个顶级对象,其属性为
array\u in\u yml
-
连字符开始一个新的数组元素。因此_yml
中属性
array_的值是一个由三个对象组成的数组,每个对象都有一个属性。@TedEpstein YAML文档由(映射和序列)和组成。我在那里没有看到任何对象、数组等。您似乎混淆了在编程语言中加载的YAML文件表示的术语。这就像将HTML文件中的
称为Aardvark(而不是标记),只是因为您的编程语言将其加载到这样的beast中。如果不是更糟的话,也很困惑。谢谢你的想法。我刚刚意识到覆盖机制是我们内部API提供的一种方法,它是yaml-cpp的包装器。谢谢您的想法。我刚刚意识到覆盖机制是我们的内部API提供的一种方法,它是yaml cpp的包装器。