【发布时间】:2020-07-01 20:41:03
【问题描述】:
我在 curl -X POST 命令中发送正确的 json 数据时遇到问题。我已经通过复制并粘贴硬编码值在我的 Mac 上成功地在本地运行 POST 命令,但我现在正在尝试创建一个 .sh 脚本来自动化这个过程。运行下面的代码时出现此错误:
{"message":"JSON 输入意外结束"}
这是来自 JSON_STRING 的输出 json,名称为通用名称,没有其他任何更改:
{ "url": "api_url", "tileset": "username.filename" }
一旦我知道如何在 POST 命令中正确格式化 json,我就知道它会起作用,但我似乎无法正确使用语法。希望一组新鲜/经验丰富的 bash 眼睛能够抓住我的错误:)。此外,我拥有的所有变量都是正确的,并且已经通过在 mac 终端中运行变量值得到确认。提前感谢您的帮助!
curl_url="http://${bucket}.s3.amazonaws.com/${key}"
echo $curl_url
tileset_id="username.filename"
JSON_STRING=$(jq -n \
--arg bn "$curl_url" \
--arg on "$tileset_id" \
'{url: $bn, tileset: $on}')
echo $JSON_STRING
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d $JSON_STRING 'apiurl'
【问题讨论】:
-
将生成的json字符串打印出来分享出去#
-
@Jens 这里是生成的 json 字符串
{ "url": "api_url", "tileset": "username.filename" }我将 api_url、用户名和文件名值更改为通用但没有与任何间距等混淆。 -
您能否将其添加到问题中,而不是作为评论
-
最后的`'apiurl'`是什么?我不确定我认为它会被 curl 用作 json 字符串的一部分
-
刚刚更新了问题。抱歉,我仍在学习堆栈溢出的技巧。那是我要发布到的 api 的 url。我把它替换掉了,因为它里面有访问令牌等等。