シェルスクリプト jq
'{"name": "Unknown", "age": 45}' を ?name="Unknown"&age=45 にしたい。
キーを抜き出す。 $ echo '{"name": "Unknown", "age": 45}' | jq keys [ "age", "name" ]
キー名を取る。 $ echo '["age","name"]' | jq -r .[0] age
#!/bin/sh echo '{"name": "Unknown", "age": 45}' | jq . json='{"name": "Unknown", "age": 45}' keys=`echo ${json} | jq keys` len=`echo ${json} | jq length` N=`expr ${len} - 1` args=? for i in `seq 0 ${N}` do # echo i=${i} key=`echo ${keys} | jq -r .[$i]` echo ${key} val=`echo ${json} | jq .${key}` echo ${val} if [ ${i} -ne ${N} ]; then args=${args}${key}=${val}\\\& else args=${args}${key}=${val} fi done echo ${args}
実行結果
$ ./test.sh { "age": 45, "name": "Unknown" } age 45 name "Unknown" ?age=45\&name="Unknown"