The best way to do this (which requires bash 4.4 or later) is to have your command return a string alternating keys and values, each terminated by a null character. You can then use readArray to parse this into an indexed array, then build your associative array from that.
$ readArray -t -d '' foo < <(printf 'key1\0value1\0key2\0value2\0')
$ declare -p foo
declare -a foo=([0]="key1" [1]="value1" [2]="key2" [3]="value2")
$ for ((i=0; i < ${#foo[@]}; i+=2)); do
> hashTable[${foo[i]}]=${foo[i+1]}
> done
$ declare -p hashTable
declare -A hashTable=([key2]="value2" [key1]="value1" )
bash 4.4 is required for the -d option to readArray. In earlier 4.x releases, you can use a string with embedded newlines, but that precludes your keys or values from themselves containing newlines.
(Note that in the assignments to hashTable, you can safely leave both ${foo[i]} and ${foo[i+1]} unquoted, as neither the key nor the value will undergo word splitting or pathname expansion. It doesn't hurt to quote them if you wish, though.)