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

Github Action中使用环境变量生成JSON Payload遇问题求助

问题解决方法

问题根源

你遇到的核心问题是:单引号包裹的字符串中,GitHub Actions不会解析${{ ... }}表达式,同时手动转义JSON的写法会干扰变量替换逻辑,导致变量原封不动传入API。

解决方案

方案1:使用toJSON函数自动生成JSON(推荐)

GitHub Actions内置的toJSON函数可以自动处理JSON格式、转义字符,同时正确解析环境变量,是扩展复杂JSON结构最省心的方式:

env:
  API: .....
  BRANCH_NAME: ${GITHUB_REF##*/}

- name: call api
  uses: privateaction
  with:
    API: ${{ env.AWS_LAMBDA_NAME }}
    Payload: ${{ toJSON({ Name: env.BRANCH_NAME }) }}

后续扩展复杂结构时,直接在对象中添加键值对即可,比如:

Payload: ${{ toJSON({ 
  Name: env.BRANCH_NAME,
  Version: env.BUILD_VERSION,
  Tags: ['staging', 'test']
}) }}

方案2:改用双引号包裹字符串并正确转义

如果必须手动编写JSON字符串,需要用双引号包裹整个Payload,同时内部的双引号用反斜杠转义,这样GitHub Actions会解析其中的${{ ... }}表达式:

env:
  API: .....
  BRANCH_NAME: ${GITHUB_REF##*/}

- name: call api
  uses: privateaction
  with:
    API: ${{ env.AWS_LAMBDA_NAME }}
    Payload: "{\"Name\": \"${{ env.BRANCH_NAME }}\"}"

方案3:提前在环境变量中构建完整Payload

可以先在env中完成变量替换和JSON构建,再直接引用该环境变量:

env:
  API: .....
  BRANCH_NAME: ${GITHUB_REF##*/}
  PAYLOAD_JSON: '{"Name": "${{ env.BRANCH_NAME }}"}'

- name: call api
  uses: privateaction
  with:
    API: ${{ env.AWS_LAMBDA_NAME }}
    Payload: ${{ env.PAYLOAD_JSON }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:32:52