application/json を使用するときにカールデータとして送信されるエスケープ文字列

application/json を使用するときにカールデータとして送信されるエスケープ文字列

CURLを使用してJSONデータを送信しています。例は次のとおりです。

mycomputer$ curl -H "Content-Type: application/json" 
     -d  "{ "some_string": "Hello mom it's me!" }"
     "http://localhost:3001/api_v2/blocks/42af6ab04d9d9635a97f8abec14ed023?api_key=fe5cf0d86af27c086ab5cd4d0eab6641"

値の内容をエスケープする方法はsome_string

たとえば、誰かが文字列を入れたい場合、Abe Lincoln's favorite character is the backslash \. He said "I love the \ and single quotes like ''".カールを使用するときに文字列をどのようにエスケープしますか?

私は次のことを行うべきだと思います。

  • 文字列に"エスケープ文字が含まれている場合は、3つのバックスラッシュを使用してください\\\"

  • 文字列に'エスケープ文字が含まれている場合は、エスケープは必要ありません'

  • 文字列に\エスケープ文字が含まれている場合は、3つのバックスラッシュを使用してください\\\\

忘れてしまった文字はありますか?

ベストアンサー1

私はあなたの目標が単にシェルから文字列を解析することであると仮定します。その場合は、以下を使用してくださいread

例えば

$ IFS='' read -r var

次に、その行を手動で貼り付けます。

複数行の場合は、以下を使用できます。

$ IFS='' read -r -d '' var

もう一度貼り付けますが、今回はCTRL+dで入力を終了します。

または区切り記号を使用してください。

$ IFS='' read -r -d '' var <<'EOF'
{ "some_string": "Hello mom it's me!" }
EOF

 

どの方法を使用しても、変数を使用して$varアクセスできます。

$ curl -H "Content-Type: application/json" \
 -d  "$var" \
 "http://localhost:3001/api_v2/blocks/42af6ab04d9d9635a97f8abec14ed023?api_key=fe5cf0d86af27c086ab5cd4d0eab6641"

おすすめ記事