You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从外部文件向YAML文件传递数组?

问题描述

我有如下数组:

[ 'value1','value2','value3' ]

希望将该数组从另一文件传入我的YAML文件,YAML文件需要在如下字段接收数组:

parameters: 
  arrayExpected: arrayValueFromAnotherFile

本来可以直接写成:

parameters:  
  arrayExpected: [ 'value1','value2','value3' ]

但因为特定原因不能这么做——YAML文件不能被大量数组值充斥。我知道YAML本身没有导入语句,请问有没有解决这类问题的方案?

可行解决方案

  • 用yq工具注入外部数组(推荐)
    yq是专门处理YAML的命令行工具,可以轻松实现外部数据的注入:

    1. 把数组单独存为一个YAML文件,比如array-data.yaml:
    arrayExpected: ['value1', 'value2', 'value3']
    
    1. 主YAML文件(比如main.yaml)保持原有结构,执行命令合并:
    yq eval '.parameters += load("array-data.yaml")' main.yaml > output.yaml
    

    执行后,output.yaml中的parameters.arrayExpected就会被替换为外部文件的数组内容。

  • 模板引擎生成YAML
    将主YAML写成模板,通过模板渲染工具填充数组:

    1. 创建模板文件main.yaml.j2:
    parameters:
      arrayExpected: {{ array_content }}
    
    1. 使用jinja2-cli渲染模板,若数组存在文件array.txt中,直接读取内容传入:
    jinja2 main.yaml.j2 -D array_content="$(cat array.txt)" > main.yaml
    

    如果数组是脚本生成的,也可以直接把生成结果作为参数传入。

  • 拆分YAML后合并
    把主配置和数组配置拆分成两个独立文件,再通过工具合并:

    • 主配置文件base.yaml:
    parameters:
      otherParameter: "example-value"
    
    • 数组配置文件array-config.yaml:
    parameters:
      arrayExpected: ['value1','value2','value3']
    
    1. 用yq合并两个文件,合并时会自动覆盖或补充字段:
    yq eval-all '. as $item ireduce ({}; . * $item)' base.yaml array-config.yaml > final.yaml
    

内容的提问来源于stack exchange,提问作者Danielius Polujanskis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:28:17