在bash中将JSON与cURL请求中的普通数据混合

时间:2014-09-26 20:28:56

标签: json bash curl

我知道我可以使用

curl --data "param1=value1&param2=value2" http://hostname/resource

curl --request POST https://$url?param1=value1&param2=value2

但是如果param1是值并且param2是JSON,我需要做什么?

如果我只是在那里扔JSON,即使使用变量

,它也无效(tm)
$json='{"data":"value"}'
curl --request POST https://$url?param1=value1&param2=$json

这里的诀窍是什么? 请注意,我只能拨打一个电话。

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,如果我们逃避一切(使用python),这就是它的样子

>>> x
'{"data": "value"}'
>>> urllib.urlencode({'param1':'value1', 'param2':x})
'param2=%7B%22data%22%3A+%22value%22%7D&param1=value1'

或者,使用curl选项

curl localhost:8080 --data-urlencode 'param1={"data":"value"}'

将发送到服务器

param1=%7B%22data%22%3A%22value%22%7D

您可能会注意到第一个版本有一个+,它可能来自json编码的空间,不确定它是否有效或是否可以删除

相关问题