如何将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
相关产品推荐
相关产品推荐

