首页 > 解决方案 > 如何引用 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 文件中使用引用?

标签: 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

无需您的程序进行任何额外处理。


推荐阅读