yaml - 如何引用 yaml 文件中的值?
问题描述
我编写了一个 YAML 文件,如下所示:
private_ips:
- 192.168.1.1
- 192.168.1.2
- 192.168.1.3
- 192.168.1.4
testcases:
- name: test_outbound
ip: << I want to use reference to private_ips[0] = '192.168.1.1'
如何在 YAML 文件中使用引用?
解决方案
你可以使用类似的东西:
ip: !Ref private_ips.0
在 YAML 中。但这需要加载 YAML 的程序为标签实现一种特殊类型,!Ref
以相对于当前数据结构的方式解释其节点。!Ref
这在大多数 YAML 加载器中有些问题,因为它们进行深度优先遍历,并且在构建树 YAML 文档根的标记节点时没有概念。这可以在加载数据结构后通过第二遍来解决。YAML 规范中没有“捷径”来执行这种对文档的遍历以获得一个值,而无需加载程序做一些特殊的事情(即 YAML 规范中没有指定)。
YAML规范中的概念是锚点(由 表示&
)和别名(由*
测试:
private_ips:
- &test 192.168.1.1
- 192.168.1.2
- 192.168.1.3
- 192.168.1.4
testcases:
- name: test_outbound
ip: *test
这应该加载到任何符合规范的 YAML 加载器中,就好像最后一行写成:
ip: 192.168.1.1
无需您的程序进行任何额外处理。
推荐阅读
- c - memcpy vs 指针转换 vs 更好的东西
- flutter - 如何做出好的颤动阴影效果?
- python - 如何在 Python 中绘制多个 3D 坐标网格(本质上可视化多个立方体)?
- html - 使用 flexbox,努力让 justify-content 对齐对象在中心
- elasticsearch - AWS托管弹性搜索不允许`_render/template`请求?
- sorting - 如何比较 google protobuf ByteString
- python - 将列表与列表列表进行比较
- angular - 尝试构建时 Angular 8 到 9 升级错误
- java - jUnit 模拟 ModelMapper
- python - 我将如何检查一个列表是否以相同的顺序在另一个列表中?