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

如何在GitHub Actions中遍历矩阵内嵌套的对象数组?

如何在GitHub Actions中遍历嵌套数组并输出值

首先修正原配置里的JSON输出转义问题(原命令的转义会导致JSON格式错误),然后通过jq工具解析嵌套数组,实现指定格式的输出。修改后的完整配置如下:

on:
  push:
    branches:
      - main

jobs:
  step1:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.build.outputs.matrix }}
    steps:
    - id: build
      run: |
        # 用单引号避免转义问题,确保输出合法JSON
        echo 'matrix=[{"project":"foo","config":"Debug","nested":[{"val":"val1"}]},{"project":"bar","config":"Release","nested":[{"val":"val2"},{"val":"val3"}]}]' >> $GITHUB_OUTPUT

  step2:
    needs: step1
    runs-on: ubuntu-latest
    strategy:
      matrix: 
        include: ${{ fromJson(needs.step1.outputs.matrix) }}
    steps:
    - run: |
        # 输出迭代序号(strategy.job-index从0开始,加1转为从1计数)
        echo "iteration ${{ strategy.job-index + 1 }}:"
        # 将嵌套数组转为JSON字符串,用jq提取每个val字段的值
        echo '${{ toJSON(matrix.nested) }}' | jq -r '.[] | .val'

关键说明:

  • 修正JSON输出:原step1中的echo命令转义错误,改用单引号包裹JSON内容,确保输出的matrix是合法的JSON格式,避免fromJson解析失败。
  • 迭代序号生成:利用${{ strategy.job-index }}获取当前矩阵任务的索引(从0开始),加1后得到从1开始的迭代序号。
  • 嵌套数组遍历:通过toJSON(matrix.nested)将嵌套数组转为标准JSON字符串,再用jq工具遍历数组,提取每个元素的val字段值。Ubuntu环境默认已安装jq,无需额外安装。

执行后输出效果与需求一致:

iteration 1:
val1
iteration 2:
val2
val3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:42:04