Я пытаюсь создать объект jsonb с ключами, упорядоченными в алфавитном порядке. Однако кажется, что jsonb_object_agg(k, v)
игнорирует порядок ввода и сортирует ввод по длине ключа, а затем по алфавиту.
E.g.
select jsonb_object_agg(k, v order by k) from (
values ('b', 'b_something'), ('ab', 'ab_something')
) as t (k,v)
дает
{
"b": "b_something",
"ab": "ab_something"
}
но то, что мне нужно, это
{
"ab": "ab_something"
"b": "b_something",
}
Есть ли способ добиться этого?
Контекст. Я сглаживаю столбец json, содержимое которого следует однородной, но громоздкой схеме. Мне удалось это сделать благодаря этому полезному ответу, но порядок ключей мне не нужен.
jsonb
не сохраняет пробелы, не сохраняет порядок ключей объектов , и не хранит повторяющиеся ключи объектов. Поэтому, если вы хотите сохранить порядок ключей, используйте вместо этогоjson_object_agg()
. - person Abelisto   schedule 27.03.2021