Как перебрать массив, собрав из него jsonb объект с фиксированными key? values - элементы массива
Есть массив вида ARRAY['A','B','C','D']. Нужно превратить его в такой массив jsonb:
with cte as (
select ARRAY['A','B','C','D'] as a
)
select
jsonb_build_array(
jsonb_build_object( 1, a[1], 2, a[1] ),
jsonb_build_object( 1, a[2], 2, a[2] ),
jsonb_build_object( 1, a[3], 2, a[3] ),
jsonb_build_object( 1, a[4], 2, a[4] )
)
from cte;
Результат норм, но проблема в том, что в исходном массиве может быть произвольное количество элементов (в примере 4, но может быть и 10 и 100).
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
with cte as (select unnest(array['A','B','C','D']) as m)
select json_agg(json_build_object(1, cte.m, 2, cte.m))
from cte
[{"1" : "A", "2" : "A"}, {"1" : "B", "2" : "B"}, {"1" : "C", "2" : "C"}, {"1" : "D", "2" : "D"}]