CouchDB cURL Командная строка Windows Недействительный 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 действительно, что дает?

Ответ 1

Ответ связан с форматированием строки JSON в командной строке. Даже если это правильный JSON, когда вы вводите его, командная строка, похоже, должна переформатировать его перед отправкой. (Возможно, кто-то еще может объяснить, почему он делает это более подробно.) Чтобы исправить это, вам нужно избежать котировок в командной строки:

curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""}

См. дополнительные кавычки? Это должно работать и возвращать "ok: true" с идентификатором и номером ревизии.

Ответ 2

Вы должны процитировать также весь оператор для поддержки таких пространств, как: -d "{\" title\ ": \" Нет ничего, что можно было бы потерять \ ", \" artist\ ": \" Foo Fighters\ "}"