【问题标题】:CouchDB cURL Windows Command Line Invalid JSONCouchDB cURL Windows 命令行 JSON 无效
【发布时间】:2013-08-21 07:24:27
【问题描述】:

使用 cURL 从 Windows 命令行运行以下命令尝试将新文档发布到现有 CouchDB 数据库(命名为 test)失败:

curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"valid":"json"}

返回错误:

{"error":"bad_request","reason":"invalid_json"}

JSON 是有效的,那么给出了什么?

【问题讨论】:

    标签: json curl command-line couchdb


    【解决方案1】:

    答案与命令行中JSON字符串的格式有关。即使您键入它时它是正确的 JSON,但在发送它之前,命令行似乎必须重新格式化它。(也许其他人可以更详细地解释它为什么这样做。)要解决这个问题,您需要在命令行如下:

    curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""}
    

    看到多余的引号了吗?这应该可以工作并返回带有 id 和修订号的“ok:true”。

    【讨论】:

    • 最简单的方法是使用单引号:-d '{"valid": "json"}'
    • 实际上,当我在 Windows 命令行提示符下使用 curl 时,仍然会抛出单引号和无效的 json 错误。
    • 如果您在 Windows 机器上本地运行,则对远程机器或 cygwin 或 gitbash 使用 putty。这是我的 CouchDB 备忘单macgyverdev.blogspot.se/2013/12/couchdb-on-linux-mint.html
    • 这是一种丑陋的做法。我这样做:-d {\"valid\":\"json\"}。这样更难混淆......
    • 如果你已经安装了它,那么通过 Git Bash 运行你的 curl 命令是最简单的方法,如果你正在阅读这篇文章,你可能会这样做。
    【解决方案2】:

    您还必须引用整个语句以支持空格,例如: -d "{\"title\":\"There is Nothing Left to Lose\" , \"artist\":\"Foo Fighters\"} "

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 2016-12-21
      • 2012-11-03
      • 2020-03-29
      • 2018-01-04
      • 2017-03-26
      • 2011-02-12
      相关资源
      最近更新 更多