我正在使用调用 Runs 端点的外部 Webhook 启动管道。
webhook 提供了一个 JSON 字符串,我想在管道内解析和使用它:
我正在管道变量中收集 JSON 字符串,该变量允许在运行时覆盖:
我的意思是在 Bash@3 任务中使用该变量:
如果我尝试用 jq 解析和使用变量值,我会收到“第 1 行第 5 列无效的数字文字”之类的错误,这让我认为 JSON 语法一定有问题。
事实上,如果我只是将其注销,似乎所有双引号都已被删除:
真的是这样吗?为什么?
如何确保字符串进入管道时带有所有双引号?
考虑在任务中使用环境变量,而不是分配本地脚本变量。
这可能有助于避免编码问题(例如带有特殊字符的字符串):
示例:
- 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\"}"}
输出: