CouchDB cURL Windows Command Line Invalid JSON
从Windows命令行运行以下命令时,使用curl尝试将新文档发布到现有的couchdb数据库(命名为test)失败:
1 | curl -H"Content-Type: application/json" -X POST"http://127.0.0.1:5984/test" -d {"valid":"json"} |
返回错误:
1 | {"error":"bad_request","reason":"invalid_json"} |
JSON是有效的,那又是什么呢?
答案与命令行中JSON字符串的格式有关。尽管键入JSON是正确的,但命令行似乎必须在发送前重新格式化它。(也许其他人可以更详细地解释为什么会这样做。)要解决这个问题,您需要像这样避开命令行中的引用:
1 | curl -H"Content-Type: application/json" -X POST"http://127.0.0.1:5984/test" -d {"""valid""":"""json"""} |
看到额外的引号了吗?这应该有效,并返回带有ID和修订号的"OK:true"。
您还必须引用整个语句来支持以下空格:d""title":"没有什么可以丢失","artist":"foo fighters""