REST API で、URL のクエリ文字列に、JSONを入れたりするとき、URL encoding するの面倒ですよね。それをワンライナーでしたいという話。
例えば、こんな感じで、json が含まれているとします。
https://example.com/user?query={"name":"user name"}
query=
以降は、JSONなので、URL encoding が必要です。
URL encoding には、nkf を使ったり、perlを使ったりいろんな方法がありますが、ここでは、jq を使ってみます。jqが入っていない方は、brew install jq
/sudo apt-get install jq
等をして、インストールしてください。(jqのインストール方法はこちら)
$ echo '{"name":"user name"}' | jq -s -R -r @uri
%7b%22name%22%3a%22user%20name%22%7d%0a
ワンライナーで書くと、以下のようになります。
curl -v -H 'Content-Type: application/json' 'https://example.com/user?query='`echo '{"name":"user name"}' | jq -s -R -r @uri`