1
我想用JQ命令行變換FORMDATA JSON對象轉換成字符串像id=johndoe&password=secret&foo=bar
猛砸JQ FORMDATA對象編碼參數字符串
{
"name": "example",
"auth_url": "http://example.com/login",
"form_data": {
"id": "johndoe",
"password": "secret",
"foo": "bar"
}
}
到目前爲止,我想出了這個功能,它的工作原理,但看起來不夠優雅或優化
function form_data_to_encoded() {
local obj=$1
form_data_keys=$(echo $obj | jq '.form_data | keys')
length=$(echo $form_data_keys | jq 'length')
encoded=""
for ((i=0; i<$length; i++)); do
key=$(echo "$form_data_keys" | jq --raw-output ".[$i]")
value=$(echo "$obj" | jq --raw-output ".form_data.$key")
encoded="$encoded$key=$value"
if ((((i+1)) < "$length")); then
encoded="$encoded&"
fi
done
echo "$encoded"
}
有沒有一種方法可以創建使用只有一個(或更少)JQ過濾器來實現? 感謝您的幫助或洞察力:)