2010-07-27 14 views
16

這與標題爲「有關'無效JSON'使用couchDB視圖但JSON正常'的錯誤」稍微有點不同:「我不想上傳文件只輸入簡單文檔。雖然JSON很好,但Curl給CouchDb提供了「無效的UTF-8 JSON」錯誤?有任何想法嗎?

我試圖使用的例子實際上是來自O'Reilly的書「CouchDB:權威指南」,我很確定我之前已經嘗試過,並且已經開始工作。這裏的命令:

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

數據庫相冊存在,用戶名和密碼都是正確的。我用JSONLint檢查了這一點,JSON是有效的,我感到很茫然......大概CouchDB服務器本身存在問題,但它似乎運行正常......任何想法?這讓我瘋狂!

謝謝

+0

響應標頭說什麼? – Anders 2010-07-27 21:53:51

+0

你升級了你的couchdb嗎?從0.10升級到1.0後,我遇到了這個問題。如果你運行測試套件會發生什麼? – filippo 2010-07-28 12:50:10

回答

22

謝謝你們。原來這是引用轉義的問題。下面是我從大衛得到了CouchDB的用戶郵件列表上回答:

這是關於 引用一個窗口的東西 - 一個真正的PITA。不幸的是 cmd.exe在windows上的shell不能正確解析 。因爲當 用 「」 或^ 「或\轉義規則」 是 有點模糊,但這個工程:

C:\ tmp目錄>捲曲-X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d 「{\」 稱號「:」沒有什麼可以丟失的「,」藝術家「:」Foo Fighters \「}」 {「ok」:true,「id」:「6e1295ed6c29495e54cc05947f18c8af」,「rev」:「 1-4b39c2971c9ad54cb37e08fa02fec636 「}

C:\ tmp目錄>

」基本上你需要到\「 逃離\」 所有 \ 「引號\」 你的JSON中」

這解決了我的問題

+2

有沒有別的辦法?我的意思是,轉義報價看起來像是PITA。 – Das 2013-02-10 06:34:44

+0

這是shell的限制。另一種方法是將JSON放入一個文件中,並使用-d @filename – AlexT 2013-08-12 13:18:18

+0

@Das:我通過安裝Git來解決它。它包括捲曲的Git Bash。 – null 2014-09-05 13:41:11

0

我也遇到了同樣的問題,尋找了一段時間後,我發現其他問題有關Git Bash。 Git bash裏面有curl命令。 git bash包含在Git安裝程序中。

0

你必須把escap字符**,也不要忘記把所有的東西放在**「」。 Ie:curl -X PUT http://127.0.0.1:5984/my_database/「001」-d「{\」Name \「:\」Suresh \「,\」age \「:\」32 \「,\」Designation \ \「}

相關問題