如何在YAML文件中引用值?

7
我已经编写了一个如下的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文件中使用引用?

1个回答

9
你可以使用类似以下的方法:
ip: !Ref private_ips.0

在YAML中,如果要实现!Ref标签的节点相对于当前数据结构的解释,需要加载YAML的程序来实现该特殊类型。这在大多数YAML加载程序中有些问题,因为它们会进行深度优先遍历,而在构建!Ref标记节点时没有树形文档的根节点概念。可以通过在加载完数据结构后进行第二次遍历来解决这个问题。 在YAML规范中没有“快捷方式”可以遍历文档并获取值,除非加载程序执行某些特殊操作(即不在YAML规范中指定)。

YAML规范中包含锚点(由&表示)和别名(由*表示)的概念,具体取决于您想如何使用,这可能会解决您的问题,例如,如果您想尝试使用哪个IP地址进行测试:

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

在不进行任何额外处理的情况下执行您的程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接