@jasondin

Postgres — как переименовать ключи объектов в jsonb array в цикле?

Допустим есть такой массив из елементов:
[{
"some_key" : 5,
"another_key" : {
            nested_key: "value"
       },
},
{
"some_key" : 231,
"another_key" : {
            nested_key: "data"
       },
}]

Суть задачи: перевести все ключи в camel case (в том числе вложенные), т.е. привести к такому виду каждый объект массива:
{
"someKey" : 231,
"anotherKey" : {
            nestedKey: "data"
       },
}

Функцию для перевода стринги в camel case я уже написал. Не знаю как переименовать ключи объекта в цикле
Помогите, пожалуйста, уже 4 дня мучаюсь. Вот что у меня сейчас есть:
create or replace function jsonb_arr_to_camel_case(j_array jsonb)
returns jsonb
as $$
declare 
	el jsonb;
	new_obj jsonb;
	text_arr text[];
	new_arr jsonb[];
	i record;
begin
	for el in select * from jsonb_array_elements(j_array)
	loop
		for i in select * from jsonb_each_text(el)
	        loop
                       --do some logic here
			el := el::jsonb - i.key || jsonb_build_object(to_camel_case(i.key), i.value);
	    end loop;
            -- do some logic here
	end loop;
	return j_array;
end;
$$ language plpgsql stable;
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы