ShellScript
JSON

shellでjsonを扱う方法

More than 1 year has passed since last update.

やり方が分かるまでに時間がかかったので、備忘録を兼ねて共有します。

一回だけ値を使う場合

curlとjqをパイプラインで繋げます。

deal_json_once.sh
curl $URL_TO_GET_JSON | jq "."

jsonを使いまわしたい場合

curl, echo, jqを使って、jsonのechoをパイプランでjqに渡します。

deal_json_multiple.sh
JSON_RESPONSE=$(curl $URL_TO_GET_JSON)
echo $JSON_RESPONSE | jq "."
echo $JSON_RESPONSE | jq ".id"
echo $JSON_RESPONSE | jq ".name"

値を変数に入れたい場合

変数に入れたい値のechoを$()で括ります。
文字列の"が要らないなら、sedで消します。

JSON_RESPONSE=$(curl $URL_TO_GET_JSON)
GOT_ID=$(echo $JSON_RESPONSE | jq ".id")
GOT_NAME=$(echo $JSON_RESPONSE | jq ".name" | sed "s/\"//g")

誰かの役に立てば嬉しいです。

参考

http://stackoverflow.com/questions/20488315/read-the-json-data-in-shell-script
https://stedolan.github.io/jq/manual/