Допустим есть такой массив из елементов:
[{
"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;