Curl 从 CouchDb 给出“无效的 UTF-8 JSON”错误,尽管 JSON 没问题?有什么想法吗?

问题描述 投票:0回答:4

这与标题为“Error about ‘invalid JSON’ with couchDB view but the json's Fine”的问题略有不同:我不想上传文件,只是输入一个简单的文档。

我尝试使用的示例实际上来自 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 服务器本身存在问题,但它似乎运行正常...有什么想法吗?这让我发疯!

谢谢

json curl couchdb
4个回答
24
投票

谢谢大家。事实证明这是引号转义的问题。这是我在 CouchDB 用户邮件列表上从 David 那里得到的答案:

这是一个关于Windows的事情 引用 - 真正的 PITA。很遗憾 Windows 上的 cmd.exe shell 无法解析 这是正确的。何时的规则 用 "" 或 ^" 或 \" 转义是 有点模糊,但这有效:

C: mp>curl -X PUT http://用户名:[电子邮件受保护]:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d "{\"标题\":\"没有什么可以失去的\",\"艺术家\":\"Foo 战士\"}" {“确定”:true,“id”:“6e1295ed6c29495e54cc05947f18c8af”,“rev”:“1-4b39c2971c9ad54cb37e08fa02fec636”}

C:mp>

“基本上你需要“逃避”所有 JSON 中的“引号”

这解决了我的问题


0
投票

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


0
投票

你必须把转义字符 ** 并且不要忘记把 -d 之后的所有东西放在 **"" 中。 即:curl -X PUT http://127.0.0.1:5984/my_database/"001" -d "{\"姓名\":\"Suresh\",\"age\":\"32\ ",\"职称\":\"联营经理\"}"


0
投票

我知道这是一篇旧帖子,但我刚刚遇到了同样的问题。

我使用的解决方案是使用VSCode的终端而不是Windows CMD。那时你不必投入一堆转义。

© www.soinside.com 2019 - 2024. All rights reserved.