web-dev-qa-db-ja.com

CouchDB cURLWindowsコマンドラインが無効なJSON

CURLを使用してWindowsコマンドラインから次のコマンドを実行して、既存のCouchDBデータベース(テストという名前)に新しいドキュメントを投稿しようとすると失敗します。

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は有効なので、何が得られますか?

19
skinneejoe

答えは、コマンドラインでのJSON文字列のフォーマットに関連しています。入力するときは適切なJSONですが、コマンドラインは送信する前に再フォーマットする必要があるようです(おそらく他の誰かがこれを行う理由をより詳細に説明できます)。これを修正するには、引用符をエスケープする必要があります。次のようなコマンドライン:

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

余分な引用符が表示されますか?これは機能し、IDとリビジョン番号とともに「ok:true」を返すはずです。

12
skinneejoe

次のようなスペースをサポートするために、ステートメント全体も引用する必要があります。

4
jst