问题从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的版本一样。
上一篇: 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?