如何通过cURL在url中传递JSON?

时间:2014-02-20 12:16:17

标签: json curl get curl-commandline

我想做以下事情:

curl localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}

当我尝试通过浏览器访问该页面时,这工作正常,但它不能通过cURL工作。我究竟做错了什么?

1 个答案:

答案 0 :(得分:4)

问题是由cURL的“URL globbing parser”引起的(请参阅docs):

  

您可以通过在大括号内编写部分集来指定多个URL或部分URL:

     

的http:// {一个,两个,三个} .COM

所以你的命令正在扩展到:

curl localhost:8080/myapp/?params="first_key":"I'm the first value"
curl localhost:8080/myapp/?params="second_key":"the second value"

您需要使用-g选项(或--globoff):

  

此选项会关闭“URL globbing解析器”。设置此选项时,您可以指定包含字母{} []的URL,而不必由curl本身解释它们。

所以:

curl -g localhost:8080/myapp/?params={"first_key":"I'm the first value","second_key":"the second value"}

然后,要保留双引号,您需要将URL包装在单引号中:

curl -g 'localhost:8080/myapp/?params={"first_key":"I'\''m the first value","second_key":"the second value"}'