在Windows命令行中使用cURL运行以下命令,尝试将新文档发布到现有的CouchDB数据库(名为test),但是失败:
curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"valid":"json"}
它返回错误:
{"error":"bad_request","reason":"invalid_json"}
JSON是有效的,那是怎么回事呢?
在Windows命令行中使用cURL运行以下命令,尝试将新文档发布到现有的CouchDB数据库(名为test),但是失败:
curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"valid":"json"}
它返回错误:
{"error":"bad_request","reason":"invalid_json"}
JSON是有效的,那是怎么回事呢?
答案与命令行中JSON字符串的格式有关。尽管在键入时它是正确的JSON,但命令行似乎必须在发送之前重新格式化它。(也许其他人可以更详细地解释为什么会这样。) 为解决此问题,您需要在命令行中转义引号,如下所示:
curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""}
看到多余的引号了吗?这样应该可以正常工作,并返回带有id和修订号的"ok:true"。
你需要引用整个语句来支持像这样的空格:-d“{\"title\":\"There is Nothing Left to Lose\",\"artist\":\"Foo Fighters\"}”
-d '{"valid": "json"}'
。 - Kim Stebel