我有一系列的数据要输入数据库。输入数据的用户界面不适合批量输入,所以我尝试制定一个等效的命令行。当我在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)位置X不支持全局嵌套大括号
其中X是第一个"[“的字符位置。
如何放入一个包含数组的json对象?
发布于 2013-03-15 22:02:41
您的命令行应该在PUT中要发送的字符串之前插入一个-d/--data,并且您希望设置Content-Type并不接受。
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
注意: JSON数据包装仅用于可读性,对于curl
请求无效。
发布于 2014-10-16 22:43:23
虽然最初的帖子有其他问题(即缺少"-d"),但错误消息更通用。
curl:(3)位置X不支持全局嵌套大括号
这是因为花括号{}和方括号[]是curl中特殊的全局字符。要关闭此功能,请使用"-g“选项。
例如,以下Solr facet查询将在没有"-g“的情况下失败,以关闭curl globbing:curl -g 'http://localhost:8983/solr/query?json.facet={x:{terms:"myfield"}}'
发布于 2013-05-22 21:10:14
值得一提的是,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`
https://stackoverflow.com/questions/15425446
复制相似问题