Това е така, защото оператор ->>
получава елемент на JSON масив като текст. Имате нужда от cast, за да преобразувате резултата му обратно в JSON.
Можете да премахнете това излишно прехвърляне, като използвате оператор ->
:
select person->'dogs'->0->'breed' from people where id = 77;