Формирование 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/


Интересные статьи

Интересные статьи

Примитивный запрос - простой джойн и группировка. Традиционные методы оптимизации - казалось бы, что могло пойти не так?..Небольшой эксперимент, на тему необходимости проверки любых гипотез в конкретн...
Иногда мы пишем SQL-запросы, мало задумываясь над тем фактом, что сначала они должны быть по сети как-то доставлены до сервера, а затем их результат - обратно в клиентское приложение. Если при этом на...
Написать эту статью меня сподвиг почти случившийся нервный срыв, причиной которого стало мое желание научиться общаться с сторонними API, конкретно меня интересовал проце...
Привет, меня зовут Иван, и я делаю Авито Доставку. Когда пользователь покупает товар с доставкой, мы показываем ему список отделений служб доставки с ценами. Цена доставки может...
В обновлении «Сидней» Битрикс выпустил новый продукт в составе Битрикс24: магазины. Теперь в любом портале можно создать не только лендинг или многостраничный сайт, но даже интернет-магазин. С корзино...