Azure Devops Pipeline:JSON 字符串变量丢失所有双引号

问题描述 投票:0回答:1

我正在使用调用 Runs 端点的外部 Webhook 启动管道。

webhook 提供了一个 JSON 字符串,我想在管道内解析和使用它:

webhook POST payload

我正在管道变量中收集 JSON 字符串,该变量允许在运行时覆盖:

pipeline variable definition

我的意思是在 Bash@3 任务中使用该变量:

setting the variable inside the Bash3 task

如果我尝试用 jq 解析和使用变量值,我会收到“第 1 行第 5 列无效的数字文字”之类的错误,这让我认为 JSON 语法一定有问题。

事实上,如果我只是将其注销,似乎所有双引号都已被删除:

logging out variable value

真的是这样吗?为什么?

如何确保字符串进入管道时带有所有双引号?

json azure-devops azure-pipelines
1个回答
0
投票

考虑在任务中使用环境变量,而不是分配本地脚本变量。

这可能有助于避免编码问题(例如带有特殊字符的字符串):

示例:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      echo "Payload: ${jsonPayload}"
      echo "${jsonPayload}" | jq
  displayName: Echo payload
  env:
    jsonPayload: $(payload) # <--------------------- set environment variable

使用以下 JSON 字符串运行管道,其中包含单引号

'
和双引号
"
:

{"name": "Patrick O'Brien", "age": 30, "value": "{\"key1\": \"value1\", \"key2\": \"value2\"}"}

输出:

Pipeline output

© www.soinside.com 2019 - 2024. All rights reserved.