Alfamale
Alfamale

Reputation: 1069

Curl giving "Invalid UTF-8 JSON" error from CouchDb although JSON is fine? Any ideas?

This is slightly different from the question titled "Error about ‘invalid JSON’ with couchDB view but the json’s fine": I am not trying to upload a file only enter a simple document.

The example I am trying to use is actually from O'Reilly's book "CouchDB: The Definitive Guide" and I am pretty sure that I have tried it before and got it to work. Here's the command:

curl -X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d '{"title":"There is Nothing Left to Lose","artist":"Foo Fighters"}'

The database albums exists and the username and password are correct. I have checked this with JSONLint and the JSON is valid and I am at a loss ... presumably there is an issue with the CouchDB server itself but it appears to be running correctly ... any ideas? This is driving me nuts!

Thanks

Upvotes: 25

Views: 19089

Answers (4)

Todd F
Todd F

Reputation: 35

I know this is an old post, but I just ran into the same issue.

The solve I used was to use VSCode's terminal instead of Windows CMD. You don't have to put in a bunch of escapes at that point.

Upvotes: 0

Suresh Kumar Pathak
Suresh Kumar Pathak

Reputation: 315

You have to put the escap characterstic ** and also do not forgot to put after -d all things in **"". I.e : curl -X PUT http://127.0.0.1:5984/my_database/"001" -d "{\"Name\":\"Suresh\",\"age\":\"32\",\"Designation\":\"Associates Manager\"}"

Upvotes: 0

null
null

Reputation: 9114

I also met same problem, after searching a while, I found about Git Bash in other question. Git bash has curl command inside. The git bash is included in Git installer.

Upvotes: 0

Alfamale
Alfamale

Reputation: 1069

Thanks guys. Turns out it's a problem with quote escaping. Here's the answer I got from David on the CouchDB user mailing list:

This is a windows thing regarding quoting - a real PITA. Unfortunately cmd.exe shell on windows doesn't parse this correctly. The rules for when escaping with a "" or a ^" or a \" are a bit vague but this works:

C:\tmp>curl -X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d "{\"title\":\"There is Nothing Left to Lose\",\"artist\":\"Foo Fighters\"}" {"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"1-4b39c2971c9ad54cb37e08fa02fec636"}

C:\tmp>

"basically you need to \"escape\" all \"quotes\" within your JSON"

This fixes my problem

Upvotes: 24

Related Questions