问题从cURL命令行将JSON文档从文件加载到CouchDB中

我在Windows平台上,并且在c: Temp目录中有一个名为agent_import.json的文件。

该文件包含以下测试JSON文档(据我所知)是有效的JSON:

{
    docs: [{
        "_id": "11",
        "name11": "test11"
    }, {
        "_id": "12",
        "name12": "test12"
    }]
}

我有一个CouchDB安装和测试数据库,称为安装在Windows上的代理

从cURL命令行执行:

curl -vX POST -H "Content-Type":"application/json" -d @c:Tempagent_import.json http://127.0.0.1:5984/agents/_bulk_docs

上面的curl命令失败了,抱怨JSON。

*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 5984 (#0)
> POST /agents/_bulk_docs HTTP/1.1
> Host: 127.0.0.1:5984
> User-Agent: curl/7.48.0
> Accept: */*
> Content-Type:application/json
> Content-Length: 25
>
* upload completely sent off: 25 out of 25 bytes
< HTTP/1.1 400 Bad Request
< Server: CouchDB/1.6.1 (Erlang OTP/R16B02)
< Date: Wed, 27 Apr 2016 16:42:51 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 48
< Cache-Control: must-revalidate
<
{"error":"bad_request","reason":"invalid_json"}
* Connection #0 to host 127.0.0.1 left intact

我已经尝试更改Json文件的内容,以便每个双引号都以下面列出的反斜杠进行处理,但是与上面相同的错误...

{
    docs: [{
        "_id": "11",
        "name11": "test11"
    }, {
        "_id": "12",
        "name12": "test12"
    }]
}

我看到有人发布类似的问题,但不完全一样,所以我想问一下,在我使用我的curl命令和/或对_bulk_docs的期望方面,我是否做了明显错误的事情

问候


首先你试图发布的json是无效的 - 文档应该在引号中。 正确的是:

{
  "docs": [{
    "_id": "11",
    "name11": "test11"
  }, {
    "_id": "12",
    "name12": "test12"
  }]
}

您始终可以使用jq等工具验证文件。 我刚刚尝试用他更新的文件和卷曲7.48.0在Windows上,它确实工作。 或者,您可以尝试使用选项--data-binary


如果你看看你的卷曲头,你可以看到第一条线索:

Content-Length: 25

你应该清楚,没有任何的摆弄可以让你的JSON内容降到25字节。

另一方面,字符串: @c:Tempagent_import.json是27个字节,假设这些被视为转义,并且它恰好是25个字节。

不知道你是如何卷曲的作品版本,但它似乎像它不处理@基于文件输入到-d像* nix的版本一样。

链接地址: http://www.djcxy.com/p/8537.html

上一篇: Issue loading JSON documents from file into CouchDB from cURL command line

下一篇: How can I connect to a Tor hidden service using cURL in PHP?