Получить Postgres Табличные данные как Json без имен полей - PullRequest
0 голосов
/ 01 мая 2020

Я хочу преобразовать Postgres данные таблицы в JSON без повторных имен полей при JSON результате. Когда я использую текущие PostgreSQL json функции, JSON результаты выглядят примерно так: [{"id":"1234","name":"XYZ"},....]. Но, таким образом, все имена полей излишне существуют в каждой строке. Поэтому мы не предпочитаем этот способ для полосы пропускания сети.

Мы хотим получить JSON результат, такой как [["1234","XYZ"],....]. Таким образом, общая длина строки json будет намного меньше.

1 Ответ

0 голосов
/ 01 мая 2020

Ну, вы можете использовать json(b)_build_array(), чтобы превратить каждую запись в массив - для этого необходимо перечислить имена столбцов:

select jsonb_build_array(id, name) js from mytable

Если вы хотите, чтобы все строки в одном массиве массивов, то Вы можете использовать агрегацию поверх этого:

select jsonb_agg(jsonb_build_array(id, name)) res from mytable

Демонстрация на DB Fiddle :

select jsonb_agg(jsonb_build_array(id, name)) res 
from (values(1, 'foo'), (2, 'bar')) as t(id, name)
| res                      |
| :----------------------- |
| [[1, "foo"], [2, "bar"]] |
...