Я могу выбрать строки как JSON из Postgres, например.Postgres select as json hash
select row_to_json(t)
from (
select id, name from accounts
) t
который возвращает каждую строку в следующем формате:
{"id":6001,"name":"Foo"}
Я хотел бы получить их в этом формате:
{ 6001: {"name":"Foo"} }
Возможно ли это?
Edit:
Это поможет мне правильный формат для одной строки:
select json_build_object(id,json_build_object('name',name)) from accounts
Но то, что я в конечном счете, после того, как это все строки в одной хэш индексируется по ключу, например,
{
6001: {"name":"Foo"},
6002: {"name":"Bar"},
6003: {"name":"Baz"},
}
Это заставляет меня ближе:
select array_to_json(array_agg(json_build_object(id,json_build_object('name',name))))
from accounts
Но это еще не совсем там, производя массив хэшей:
[
{ 6001: {"name":"Foo"} },
{ 6002: {"name":"Bar"} },
{ 6003: {"name":"Baz"} },
]
Блестящий! Спасибо – jemminger
Когда я запустил это, он возвращает массив объектов JSON, таких как '' '[ {6001: {" name ":" Foo "}}, {6002: {" name ":" Bar "}}, {6003: { "имя": "Баз"}}, ] '' '' –
ВЫБОР \t \t \t cm.name, \t \t \t cm.short_code, \t \t \t cm.timezone, \t \t \t ST_Y (map_center :: geometry) AS lat, \t \t \t ST_X (map_center :: геометрия) в сжиженном, \t \t \t CONCAT_WS ('', \t \t \t \t ST_YMIN (cz.mpoly :: геометрия), \t \t \t \t ST_XMIN (CZ.mpoly :: геометрия) \t \t \t) КАК ТЛ, \t \t \t CONCAT_WS ('', \t \t \t \t ST_YMAX (cz.mpoly :: геометрия), \t \t \t \t ST_XMAX (cz.mpoly :: геометрия) \t \t \t) КАК бр \t \t ОТ \t \t \t core_market см \t \t \t РЕГИСТРИРУЙТЕСЬ core_zone CZ ON (cz.market_id = cm.id) \t \t ГДЕ \t \t \t удален = False \t \t \t И cz.active = True \t \t \t И cz.beta = False \t \t ГРУППА ПО \t \t \t cm.name, cm.short_code, cm.timezone, \t \t \t cm.map_ce nter, cz.mpoly; ' –