如何使用 bash curl 将 JSON 作为变量发送?

如何使用 bash curl 将 JSON 作为变量发送?

我正在尝试使用 curl 发送 POST 请求,但我想将 json 数据存储在变量中,以便在发生错误时重新发送。我使用了以下代码:

jsonvariable="{"ora" : "value1", "temp" : "value2", "rh" : "value3", "lat" : "value4", "longi" : "value5"}"


curl -X POST -H "Content-Type: application/json" -d '$jsonvariable' http://localhost:8080/updates

但选项后的格式-d不正确。你能帮助我吗?

此代码:

curl -X POST -H "Content-Type: application/json" -d '{"ora" : "value1", "id" : "value2", "temp" : "value3","rh" : "value4", "lat" : "value5", "longi" : "value6"}' http://localhost:8080/updates

没有给出任何错误

答案1

您使用了单引号,这会阻止变量扩展。请改用双引号:

curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates

如果变量内容包含双引号,则可以用反斜杠将其括起来。

您可以省略-X POST这里,因为如果您指定要发送的数据,则 POST 是默认方法-d

关于引用的进一步阅读bash如何输入名称中带有特殊字符的文件或目录?

相关内容