Формирование JSON в PostgreSQL

от автора

Пример 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"]}]


ссылка на оригинал статьи https://habr.com/ru/post/658817/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *