My use case required immediate fixed values to pass.
f() {
declare -A map=$1
for key in ${!map[@]}
do
echo "$key : ${map[$key]}"
done
}
This correctly produces:
# f '(["key 1"]="value 1" ["key 2"]="value 2")'
key 2 : value 2
key 1 : value 1