1. ホーム
  2. json

[解決済み] curlを使用して配列付きjsonオブジェクトをPUTする方法

2022-10-19 11:19:31

質問

データベースに入力する一連のデータを持っています。 データを入力するためのユーザーインターフェイスは、一括入力には向いていないので、コマンドラインに相当するものを策定しようとしています。 クロームでUIのネットワークリクエストを調べると、jsonオブジェクトのPUTリクエストが表示されます。 そのリクエストを再現してみると

curl -H 'Accept: application/json' -X PUT '{"tags":["tag1","tag2"],"question":"Which band?","answers":[{"id":"a0","answer":"Answer1"},{"id":"a1","answer":"answer2"}]}' http://example.com/service`

エラーが表示される

curl: (3) [グロビング] ネストされた中括弧はpos Xでサポートされていません。

ここで、Xは最初の"["の文字位置です。

配列を含むjsonオブジェクトをPUTするにはどうすればよいですか?

どのように解決するのですか?

コマンドラインには -d/--data をPUTで送りたい文字列の前に挿入し、AcceptではなくContent-Typeを設定するようにしたい。

curl -H 'Content-Type: application/json' -X PUT -d '[JSON]' \
     http://example.com/service

質問から正確なJSONデータを使用すると、完全なコマンドラインは次のようになります。

curl -H 'Content-Type: application/json' -X PUT \
    -d '{"tags":["tag1","tag2"],
         "question":"Which band?",
         "answers":[{"id":"a0","answer":"Answer1"},
                    {"id":"a1","answer":"answer2"}]}' \
    http://example.com/service

注:JSONデータは可読性のためだけにラップされています。 curl リクエストでは無効です。