Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CouchDB cURL Windows Command Line Invalid JSON

Tags:

Running the following command from a Windows command line using cURL attempting to post a new document to an existing CouchDB database (named test) fails:

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

It returns the error:

{"error":"bad_request","reason":"invalid_json"}

The JSON is valid so what gives?

like image 481
skinneejoe Avatar asked Aug 19 '13 13:08

skinneejoe


2 Answers

The answer is related to the formatting of the JSON string on the command line. Even though it is proper JSON when you type it, the command line, it seems, must reformat it before sending it.(Maybe someone else can explain why it does this in more detail.) To fix this you need to escape your quotations in the command line like so:

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

See the extra quotation marks? This should work and return "ok:true" with an id and revision number.

like image 89
skinneejoe Avatar answered Sep 20 '22 03:09

skinneejoe


You have to quote also the whole statement to support spaces like: -d "{\"title\":\"There is Nothing Left to Lose\" , \"artist\":\"Foo Fighters\"}"

like image 40
jst Avatar answered Sep 19 '22 03:09

jst