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

从cURL命令行将JSON文档从文件加载到CouchDB时出现问题,json,curl,couchdb,bulkinsert,Json,Curl,Couchdb,Bulkinsert,我在Windows平台上,在c:\Temp目录中有一个名为agent\u import.json的文件 该文件包含以下测试JSON文档,据我所知,这些文档是有效的JSON: { docs: [{ "_id": "11", "name11": "test11" }, { "_id": "12", "name12": "test12" }] } 我在Windows上安装了一个名为代理的CouchDB安装和测试数

我在Windows平台上,在c:\Temp目录中有一个名为agent\u import.json的文件

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

{
    docs: [{
        "_id": "11",
        "name11": "test11"
    }, {
        "_id": "12",
        "name12": "test12"
    }]
}
我在Windows上安装了一个名为代理的CouchDB安装和测试数据库

从cURL命令行执行:

curl -vX POST -H "Content-Type":"application/json" -d @c:\Temp\agent_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
我曾看到有人发布过类似的问题,但并不完全相同,因此我想问一下,在使用curl命令和/或我对\u bulk\u docs的期望方面,我是否犯了一些明显的错误


关于

如果您查看curl标题,您可以看到第一条线索:

Content-Length: 25
您应该清楚,再多的篡改也不会使JSON内容减少到25字节

另一方面,字符串:
@c:\Temp\agent\u import.json
是27个字节,假设这些
\
被视为转义,正好是25个字节


不知道您的curl版本是如何工作的,但它似乎不像*nix版本那样处理基于
@
的文件输入到
-d

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

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

您总是可以使用jq之类的工具来验证文件。我刚刚试过在Windows上更新文件和curl7.48.0,效果不错。或者,您可以尝试使用选项--data binary

来添加,curl的版本是7.48.0,这是一个最新版本,不太可能成为问题。正如您所说,更可能的是,我在命令行上的指令是错误的,因为-d表示下面的是{json}。我现在需要找到命令行需要什么来读取提供的文件:(我的意思是,这是因为您在Windows上导致了这个问题,
-d@filename
在*nix中工作得非常好。谢谢Gytis,您完全正确。将文档更改为“docs”工作得非常好!就这么简单!非常感谢
{
  "docs": [{
    "_id": "11",
    "name11": "test11"
  }, {
    "_id": "12",
    "name12": "test12"
  }]
}