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

如何将JSON对象指定为GitHub Action输出变量?报错求助

问题分析

你遇到的错误是因为GitHub Actions的输出变量要求key=value格式必须是单行,而你当前生成的JSON是带换行和缩进的多行格式,导致GitHub无法正确解析输出指令。

解决方案

修改PowerShell代码,将JSON转换为单行压缩格式,同时简化不必要的对象包装逻辑:

# 先确保已读取JSON文件到$json变量(补充你可能遗漏的读取步骤)
$json = Get-Content -Path "你的JSON文件路径" -Raw | ConvertFrom-Json

for ($i = 0; $i -lt $json.test.Count; $i++) {
    # 将数组元素直接转为单行压缩JSON,避免换行和缩进
    $jsonObject = $json.test[$i] | ConvertTo-Json -Depth 3 -Compress
    # 直接输出到GITHUB_OUTPUT,无需switch判断
    "build$($i + 1)=$jsonObject" >> $env:GITHUB_OUTPUT
}
关键改动说明
  • -Compress参数:强制ConvertTo-Json生成单行无缩进的JSON字符串,完全符合GitHub Actions输出的格式要求
  • 简化对象包装:你之前创建的[PSCustomObject]@{ "build$($i+1)" = ... }是多余的,因为输出的key已经是build1/build2,直接转换数组元素即可
  • 移除switch判断:通过循环变量动态生成输出key,代码更简洁且支持更多数组元素(不止2个)
错误原因详解

GitHub Actions解析GITHUB_OUTPUT文件时,每一行必须严格遵循key=value的单行格式。你之前生成的多行JSON会被拆分成多行,其中包含类似 "build_dir1": {的行,这完全不符合输出规则,因此触发解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:03