尽管JSON很好,但是从CouchDb发出“无效的UTF-8 JSON”错误?有任何想法吗?

时间:2010-07-27 21:01:50

标签: json curl couchdb

这与题为“错误关于'无效JSON'与couchDB视图但json很好”的问题略有不同:我不想上传文件只输入一个简单的文档。

我试图使用的例子实际上来自O'Reilly的书“CouchDB:The Definitive Guide”,我很确定我之前已经尝试过并让它发挥作用。这是命令:

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

数据库相册存在且用户名和密码正确无误。我用JSONLint检查过这个并且JSON是有效的,我很茫然......可能是CouchDB服务器本身存在问题,但它看起来运行正常......任何想法?这让我疯了!

由于

3 个答案:

答案 0 :(得分:23)

谢谢你们。原来这是引用转义的问题。以下是我在CouchDB用户邮件列表中从David那里得到的答案:

  

这是关于Windows的事情   引用 - 一个真正的PITA。不幸   Windows上的cmd.exe shell无法解析   这是正确的。什么时候的规则   用“”或“^”或“是”逃脱   有点模糊,但这有效:

     

C:\ tmp> curl -X PUT   http://username:password@127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af   -d“{\”title \“:\”没有什么可以失去\“,”艺术家“:\”Foo   战士\ “}”   { “OK”:真, “ID”: “6e1295ed6c29495e54cc05947f18c8af”, “REV”: “1-4b39c2971c9ad54cb37e08fa02fec636”}

     

C:\ TMP>

     

“基本上你需要”逃脱“所有   在你的JSON中“引用”“

这解决了我的问题

答案 1 :(得分:0)

我也遇到了同样的问题,经过一段时间的搜索,我在其他问题上找到了Git Bash。 Git bash里面有curl命令。 git bash包含在Git安装程序中。

答案 2 :(得分:0)

你必须把escap字符 **放在一起,并且不要忘记将所有内容放在**"" 之后。 即:卷曲-X PUT http://127.0.0.1:5984/my_database/" 001" -d" {\"姓名":\" Suresh \",\"年龄\":\&#34 ; 32 \",\"指定\":\"员工经理\"} "