如何使用curl将数组放入json对象

我有一系列数据输入数据库。 输入数据的用户界面不适合批量输入,所以我试图制定一个等效的命令行。 当我使用chrome检查UI的网络请求时,我看到一个json对象的PUT请求。 当我尝试复制请求时

curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`

我收到一个错误

curl:(3)[globbing]在位置X处不支持嵌套大括号

其中X是第一个“[”的字符位置。

我怎样才能把一个包含数组的json对象?


你的命令行应该在你想在PUT中发送的字符串之前插入-d / - 数据,并且你想要设置Content-Type而不是Accept。

curl -H 'Content-Type: application/json' -X PUT -d '[JSON]' http://example.com/service

使用问题中的确切JSON数据,完整的命令行将变为:

curl -H 'Content-Type: application/json' -X PUT 
-d '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' 
http://example.com/service

虽然原始文章有其他问题(即缺少“-d”),但错误消息更通用。

curl:(3)[globbing]在位置X处不支持嵌套大括号

这是因为大括号{}和方括号[]是卷曲中特殊的通配符。 要关闭这个通配符,请使用“ -g ”选项。

举例来说,如果没有“-g”关闭curl globbing ,以下Solr构面查询将会失败: curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'


应该指出的是Accept头告诉服务器一些我们正在接受的东西,而这个上下文中的相关头文件是Content-Type

发送JSON时,通常建议将Content-Type指定为application/json 。 对于curl来说,语法是:

-H 'Content-Type: application/json'

所以完整的curl命令将是:

curl -H 'Content-Type: application/json' -H 'Accept: application/json' -X PUT -d '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`
链接地址: http://www.djcxy.com/p/48561.html

上一篇: How to PUT a json object with an array using curl

下一篇: PHP cURL custom headers