如何在YAML中将数组元素设为变量并复用后覆盖指定字段
YAML锚点复用并覆盖指定字段的正确写法
要实现复用锚点对象并仅覆盖parameters字段,你需要使用YAML的**合并键(Merge Key)**语法<<: *锚点名,它能将锚点对应的映射内容合并到当前映射中,之后定义的同名字段会自动覆盖锚点里的原有值。
正确的YAML写法
elements: - &element-object name: common element type: common type parameters: param1: val1 param2: val2 - <<: *element-object parameters: param1: val3 param2: val4
验证转换结果
用yq -p yaml -o json file.yaml转换后的JSON如下,可见第二个元素成功复用了name和type字段,同时覆盖了parameters:
{ "elements": [ { "name": "common element", "type": "common type", "parameters": { "param1": "val1", "param2": "val2" } }, { "name": "common element", "type": "common type", "parameters": { "param1": "val3", "param2": "val4" } } ] }
原理说明
<<: *element-object的作用是把锚点element-object的所有键值对导入当前映射- 后续定义的
parameters会覆盖锚点中原本的parameters字段,这是YAML映射中“后定义的键覆盖先定义的同键”的规则决定的
内容的提问来源于stack exchange,提问作者rzlvmp
相关产品推荐
相关产品推荐

