Пример 1. Кортеж ключ: значение

select row_to_json(j) 
from
(
	select 
		'value_1' as key_1,
		'value_2' as key_2,
		'value_3' as key_3
) as j;

Результат запроса:

{"key_1":"value_1","key_2":"value_2","key_3":"value_3"}

Пример 2. Массив JSON

select array_to_json(array_agg(row_to_json(j)))
from
(
	select 
		'value_1' as key_1,
		'value_2' as key_2,
		'value_3' as key_3
) as j;

Результат запроса:

[{"key_1":"value_1","key_2":"value_2","key_3":"value_3"}]

Пример 3. Массив кортежей JSON

select array_to_json(array_agg(json_build_object(j,i))) 
from 
(
	values 
		('key_1', 'value_1'), 
		('key_2', 'value_2'), 
		('key_3', 'value_3')
) as t(j,i);

Результат запроса:

[{"key_1":"value_1"},{"key_2":"value_2"},{"key_3" "value_3"}]

Пример 4. Формирование JSON из переменного списка аргументов

select json_build_object
(
	'key_1','value_1',
	'key_2', 'value_2',
	'key_3', 'value_3'
);

Результат запроса:

{"key_1" : "value_1", "key_2" : "value_2", "key_3" : "value_3"}

Таблица для последующих примеров

create table some_table
(
	column_1 text,
	column_2 text,
	column_3 text,
	column_4 text,
	column_5 text,
	column_6 text
);

insert into some_table
(
	column_1, 
	column_2, 
	column_3,
	column_4,
	column_5,
	column_6
)
values 
(
	'value_1', 
	'value_2', 
	'value_3',
	'value_4', 
	'value_5', 
	'value_6'
);

Пример 5. Формирование JSON из массива ключей и массива значений

select json_object
(
	'{key_1, key_2, key_3}', 
	'{value_1, value_2, value_3}'
);

Результат запроса:

{"key_1" : "value_1", "key_2" : "value_2", "key_3" : "value_3"}

Пример 6. Формирование кортежа ключ: значение

select json_agg(json_build_object
(
  'key_1', t.column_1,
  'key_2', t.column_2,
  'key_3', t.column_3,
  'key_4', t.column_4,
  'key_5', t.column_5,
  'key_6', t.column_6
))
from some_table as t;

Результат запроса:

[{"key_1" : "value_1", "key_2" : "value_2", "key_3" : "value_3", "key_4" : "value_4", "key_5" : "value_5", "key_6" : "value_6"}]

Пример 7. Формирование кортежа ключ: массив значений

select json_agg(json_build_object
(
    'key_1', json_build_array(t.column_1, column_2),
	'key_2', json_build_array(t.column_3, column_4),
	'key_2', json_build_array(t.column_5, column_6)
))
from some_table as t;

Результат запроса:

[{"key_1" : ["value_1", "value_2"], "key_2" : ["value_3", "value_4"], "key_2" : ["value_5", "value_6"]}]

Комментарии (2)


  1. hello_my_name_is_dany
    03.04.2022 16:29
    +1

    А зачем? А что? А посложнее простых объектов? Пока только сгодится в качестве ответа на SO, а не статьи для Хабра. И могли бы для приличия ссылки на документацию оставить.


    1. Akina
      03.04.2022 19:15

      Да вообще такое впечатление, что теперь студентов вместо рефератов заставляют постить статью на Хабр...