Задать вопрос
@hbrmdc

Как получить JSON объект из PostgreSQL?

PostgreSQL 9.4
Как получить данные вот в таком виде:
parentTableFirstProp: 'string',
parentToChildReference: [
    {childTableFirstProp: 'another string'},
    {childTableFirstProp: 'yet another string'}
}]

вместо такого:
[{
    parentTableFirstProp: 'string',
    childTableFirstProp: 'another string',
},{
    parentTableFirstProp: 'string',
    childTableFirstProp: 'yet another string'
}]

Возможно ли это сделать каким-то простым запросом или каждый раз нужно делать по 2+ SELECT и затем вкладывать один ответ в другой используя алиасы?
Благодарю вас за уделенное время!
  • Вопрос задан
  • 1606 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@hbrmdc Автор вопроса
select row_to_json(t)
from (
select "ParentTable"."parentTableFirstProp", (
select array_to_json(array_agg(row_to_json(child)))
  from (
    select "childTableFirstProp"
    from "ChildTable"
    where "ChildTable"."id"="ParentTable"."parentToChildReference"
  ) child

  ) as parentToChildReference
from "ParentTable"
) t
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kshvakov
Как-то так:

select row_to_json(j.*) from (

	select  'string' as parentTableFirstProp, to_json(

		(
		select to_json(array_agg(r.*)) from (
			select s as childTableFirstProp from (select unnest('{another string,yet another string}'::text[]) as s) _
		)as r
		)
	) as parentToChildReference

) as j
Ответ написан
romy4
@romy4
Exception handler
сверху не по стандарту json, так что вам postgres всё верно возвращает. переделайте, чтобы всё воспринималось по стандарту
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы