如何在YAML中引用其他键的值?现有写法是否可行?
YAML内部键值引用问题解答
首先明确:你写的%Details.Name%这种写法在原生YAML里完全不生效,它会被当作普通字符串存储,不会自动替换成Jack。原生YAML本身没有内置这种嵌套键引用的机制。
如果需要实现引用其他键的值,分几种情况处理:
1. 依托特定工具/框架
如果你是在支持YAML扩展的工具里使用(比如Ansible、Spring Boot、Kustomize等),这些工具自带变量解析能力,但语法和你用的%xxx%可能不同:
- Ansible用双大括号语法:
{{ Details.Name }} - Spring Boot用美元大括号语法:
${Details.Name}
具体语法需参考你使用工具的官方文档。
2. 原生YAML的锚点引用
原生YAML支持锚点(&)和引用(*)的写法,但只能引用完整的键值,无法实现嵌套路径引用:
Details: Name: &name Jack Location: &location USA ABC: TestValue Refer: Test1: *name Test2: *location
这种写法会让Test1直接复用Name的Jack值,但缺点是只能引用一级键的值,做不到%Details.Name%这种动态读取嵌套路径的效果。
3. 自定义脚本解析
如果是纯YAML文件且需要灵活的嵌套引用,就得借助外部脚本(比如Python、JavaScript)处理:读取YAML内容后,手动识别%xxx%这类占位符,再从YAML结构中找到对应路径的值完成替换。
内容的提问来源于stack exchange,提问作者svw1105
相关产品推荐
相关产品推荐

