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

GitLab中curl请求JSON参数引号丢失问题求助

GitLab中curl请求JSON双引号丢失的解决方案

问题原因

你原来的命令里,用单引号包裹了-d参数的全部内容,同时内部加了转义双引号\",但在GitLab CI的bash环境中,单引号内部的转义字符不会被解析,导致实际发送的JSON里双引号被丢弃,变成了{role:Admin}这种不符合JSON规范的格式。

可行解决方案

方案1:调整引号层级,用单引号包裹JSON外层,内部直接用双引号

将-d参数的内容改用单引号包裹,内部不需要转义双引号,同时去掉URL中变量外层多余的单引号(GitLab CI中变量可直接在无引号/双引号环境下解析):

curl -k -XPATCH -H "Content-Type: application/json" -d '{"role":"Admin"}' https://${admin_user}:${admin_password}@grafana-monitoring.${NAMESPACE}.test.com.example/api/orgs/1/users/2

方案2:使用Here-doc传递JSON数据

这种方式完全规避引号转义问题,直接传递纯净的JSON内容:

curl -k -XPATCH -H "Content-Type: application/json" --data @- https://${admin_user}:${admin_password}@grafana-monitoring.${NAMESPACE}.test.com.example/api/orgs/1/users/2 <<EOF
{"role":"Admin"}
EOF

方案3:提前定义JSON变量

先把JSON内容存入变量,再传递给curl,减少引号冲突:

JSON_PAYLOAD='{"role":"Admin"}'
curl -k -XPATCH -H "Content-Type: application/json" -d "$JSON_PAYLOAD" https://${admin_user}:${admin_password}@grafana-monitoring.${NAMESPACE}.test.com.example/api/orgs/1/users/2

内容的提问来源于stack exchange,提问作者Yassen Fouad Anis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:14