string - 如何在 GitHub 操作中以 json 格式发送多行字符串?
问题描述
我正在处理 GitHub 操作,并且有一个案例需要将多行字符串作为 json 发送。我收到一些意外的令牌错误。
这是我的 test.md 和工作流程:
---------------------------
**test**
- update something
- another (update)
**test2**
- Add `test` to param
steps:
- uses: actions/checkout@v2
- name: Get Log
id: getLog
run: |
CHANGELOG="$(cat test.md)"
CHANGELOG="$($CHANGELOG//'%'/'%25')"
CHANGELOG="$($CHANGELOG//$'\n'/'%0A')"
CHANGELOG="$($CHANGELOG//$'\r'/'%0D')"
echo "::set-output name=changeLog::$CHANGELOG"
- name: Invoke CLI workflow with changelog
uses: benc-uk/workflow-dispatch@v1
with:
workflow: Workflow publish
token: ${{ secrets.TOKEN }}
repo: repo/name
inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'
我收到意外的令牌错误。如何解决这个问题?
提前致谢
解决方案
您在提供的示例中似乎有 2 个问题。
- 您的字符串替换似乎无效。那应该是这样的。
run: |
CHANGELOG=$(cat test.md)
CHANGELOG="${CHANGELOG//'%'/'%25'}"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
echo "::set-output name=changeLog::$CHANGELOG"
- 您只是在
json
为对象创作无效。
inputs: '{ "changeLog": "${{steps.getLog.outputs.changeLog}}"}'
输出无效的json:
{ "changeLog": "---------------------------
**test**
- update something
- another (update)
**test2**
- Add `test` to param"}
修复这个使用上下文函数toJSON()
inputs: '{ "changeLog": ${{ toJSON(steps.getLog.outputs.changeLog) }}}'
输出有效的json:
{ "changeLog": "---------------------------\n **test**\n - update something\n - another (update)\n \n **test2**\n - Add `test` to param"}
编辑
我发布了小型复合设置文本输出动作来处理多行字符串。
- uses: actions/checkout@v2
- name: test changelog
uses: mkungla/actions-set-text-output@v1
id: get-changekog
with:
text: $(cat tests/test-changelog.md)
- run: echo "${{ steps.get-changekog.outputs.value }}"
推荐阅读
- javascript - 我正在尝试使用 AddEventListener 和 QuerySelector 制作一个简单的 Javascript 计算器
- anaconda - 如何使用代码 Jupyter notebook 隐藏单元格
- linux - 为什么函数 brk() 的参数是 void* 而不是 int 类型?
- excel - 即使结果为空白,当我将公式复制并粘贴为值时,Excel 也可能会插入隐藏字符 - 我该如何避免?
- php - 从多个函数中访问数据
- css - 如何在闪亮进度条的详细信息中添加换行符?
- javascript - Fetch API POST 请求响应返回空文本
- c++ - 如何在单独的源文件中定义模板函数并调用它,只包括标题
- ios - 类型不符合协议“可编码”
- konvajs - 向 Konva 形状添加描边而不增加其大小