Пример 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"]}]
hello_my_name_is_dany
А зачем? А что? А посложнее простых объектов? Пока только сгодится в качестве ответа на SO, а не статьи для Хабра. И могли бы для приличия ссылки на документацию оставить.
Akina
Да вообще такое впечатление, что теперь студентов вместо рефератов заставляют постить статью на Хабр...