powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сложить два json в один? (не json_agg)
9 сообщений из 9, страница 1 из 1
Как сложить два json в один? (не json_agg)
    #39969770
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.


Есть таблица, в ней два поля типа json.

Как их можно сложить вместе чтобы они стали одним json?
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969777
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое поле в таблицы (LIMIT 1) выглядит так:

Код: sql
1.
{"parameters" : [{"name" : "Парсинг лога", "count" : 12}]}




Второе:

Код: sql
1.
{"server_info" : [{"name" : "192.168.1.1"}]}




Надо как-то сделать чтобы они вместе объединились.

Вот так чтобы было:
Код: sql
1.
{"parameters" : [{"name" : "Парсинг лога", "count" : 12}],"server_info" : [{"name" : "192.168.1.1"}]}
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969779
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per
Приветствую.


Есть таблица, в ней два поля типа json.

Как их можно сложить вместе чтобы они стали одним json?


В документации все есть https://www.postgresql.org/docs/12/functions-json.html
в части
|| jsonb Concatenate two jsonb values into a new jsonb value
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969783
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
per
Приветствую.


Есть таблица, в ней два поля типа json.

Как их можно сложить вместе чтобы они стали одним json?


В документации все есть https://www.postgresql.org/docs/12/functions-json.html
в части
|| jsonb Concatenate two jsonb values into a new jsonb value




Максим, сапасибо!

Иемнно после приведения к jsonb получилось.!!!




Еще такой вопросик.
После объединения jsonb они метсами перепутались, второй стал первым.

И как их местами не меняю - все равно порядок не меняется.


Скажите, можно как-то при объединении порядок сохранить?
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969798
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per,

jsonb не хранит порядок элементов и прочее форматирование.
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969802
per
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
per,

jsonb не хранит порядок элементов и прочее форматирование.



Благодарю за помощь!
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39969953
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
per
Maxim Boguk
пропущено...


В документации все есть https://www.postgresql.org/docs/12/functions-json.html
в части
|| jsonb Concatenate two jsonb values into a new jsonb value




Максим, сапасибо!

Иемнно после приведения к jsonb получилось.!!!


Если у вас поля были json типа оно и так должно было работать без приведения.
Значит у вас были "на заборе ... написано а там json лежит" о чем вы не написали (а это ключевая в данном случае информация).
Попробуйте ваши поля к json (не jsonb) привести тогда и порядок будет сохраняться (возможно и без гарантии но скорее да чем нет) так как json поле это текстовое в отличии от jsonb (который бинарный).
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39970072
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
Попробуйте ваши поля к json (не jsonb) привести тогда и порядок будет сохраняться

Понимаете в чём дело....
select * from pg_operator where oprname = '||' and oprright = (select oid from pg_type where typname = 'json');
oid | oprname | oprnamespace | oprowner | oprkind | oprcanmerge | oprcanhash | oprleft | oprright | oprresult | oprcom | oprnegate | oprcode | oprrest | oprjoin
-----+---------+--------------+----------+---------+-------------+------------+---------+----------+-----------+--------+-----------+---------+---------+---------
(0 строк)
Нет его для json. Только для jsonb
...
Рейтинг: 0 / 0
Как сложить два json в один? (не json_agg)
    #39970163
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Maxim Boguk
Попробуйте ваши поля к json (не jsonb) привести тогда и порядок будет сохраняться

Понимаете в чём дело....
select * from pg_operator where oprname = '||' and oprright = (select oid from pg_type where typname = 'json');
oid | oprname | oprnamespace | oprowner | oprkind | oprcanmerge | oprcanhash | oprleft | oprright | oprresult | oprcom | oprnegate | oprcode | oprrest | oprjoin
-----+---------+--------------+----------+---------+-------------+------------+---------+----------+-----------+--------+-----------+---------+---------+---------
(0 строк)

Нет его для json. Только для jsonb

И правда....
Some further operators also exist only for jsonb, as shown in Table 9.45.
Но блин почему? Все же остальное работает одинаково и с json и с jsonb?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как сложить два json в один? (не json_agg)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]