这与标题为“Error about 'invalid JSON' with couchDB view but the json's fine”的问题略有不同:我不想上传文件,只是输入一个简单的文档。
我尝试使用的示例实际上来自O 'Reilly的书“CouchDB:The Recursive Guide”,我很确定我以前尝试过并让它工作。下面是命令:
curl -X PUT http://username:[email protected]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d '{"title":"There is Nothing Left to Lose","artist":"Foo Fighters"}'
字符串
数据库相册存在,用户名和密码是正确的。我已经用JSONLint检查过了,JSON是有效的,我很困惑.大概是CouchDB服务器本身有问题,但它似乎运行正常.有什么想法吗?这让我抓狂!
谢谢
4条答案
按热度按时间q35jwt9p1#
谢谢大家。原来这是一个引号转义的问题。下面是我从CouchDB用户邮件列表上的大卫那里得到的答案:
这是一个关于引用的windows东西-一个真实的PITA。不幸的是,windows上的Xbox.exe shell不能正确解析它。当用“”或^”或\”转义时,规则有点模糊,但这是有效的:
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>
“基本上你需要“转义”JSON中的所有“引号””
这解决了我的问题
o2rvlv0m2#
我也遇到了同样的问题,在搜索了一段时间后,我在另一个问题中发现了Git Bash。Git bash里面有curl命令。Git bash包含在Git安装程序中。
ubof19bj3#
您必须将escap字符 * 放在**"中,并且不要忘记将所有内容放在-d之后。例如:curl -X PUT http://127.0.0.1:5984/my_database/“001”-d“{\“Name":\“Suresh",\“age":\“32",\“Designation":\“Associates Manager"}**”
s5a0g9ez4#
我知道这是一篇老文章,但我刚刚遇到了同样的问题。
我使用的解决方法是使用VSCode的终端而不是Windows CMD。你不必在这一点上放一堆转义。