powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Json запрос с условием. Нужно вернуть без скобок
4 сообщений из 4, страница 1 из 1
Json запрос с условием. Нужно вернуть без скобок
    #40110761
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть работа с json объектами. К примеру:

Код: sql
1.
2.
3.
4.
# select jsonb_path_query('{"a":{"ary2":"s1","b2":2},"k1":"l"}', '$.*."ary2"');
 jsonb_path_query 
------------------
 "s1"



Если же написать :

Select '{"a":{"ary2":"s1","b2":2},"k1":"l"}'::jsonb#>>'{"a", "ary2"}' то вернут текст без кавычек.

Код: sql
1.
2.
3.
4.
5.
# Select '{"a":{"ary2":"s1","b2":2},"k1":"l"}'::jsonb#>>'{"a", "ary2"}' as itog;
 itog 
------
 s1
(1 строка)



Вопрос: как это можно сделать (вернуть текст без двойных кавычек) в первом варианте с применением фильтра/условий.
Перепробовал все, фантазия иссякла.
Нужно вытаскивать данные с большого массива сложно вложенных элементов (до 5 уровней и с жуткими названиями ключей по 30-50 символов).
Вручную прописывать пути - это нереально.

Вариант с заменой кавычек (с их удалением из текста) как то не хочется использовать, т.к. в текстах встречаются двойные кавычки и они тогда будут удалены.

.
...
Рейтинг: 0 / 0
Json запрос с условием. Нужно вернуть без скобок
    #40110852
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

jsonb_path_query возвращает jsonb. А вот #>> возвращает текст. Поэтому можно, например, сконвертировать явно:

Код: plsql
1.
2.
3.
4.
# select a #>> '{}' from (select jsonb_path_query('{"a":{"ary2":"s1","b2":2},"k1":"l"}', '$.*."ary2"') as A) items;
 ?column? 
-------
 s1
...
Рейтинг: 0 / 0
Json запрос с условием. Нужно вернуть без скобок
    #40111092
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxkar
О-О-О,

jsonb_path_query возвращает jsonb. А вот #>> возвращает текст. Поэтому можно, например, сконвертировать явно:

Код: plsql
1.
2.
3.
4.
# select a #>> '{}' from (select jsonb_path_query('{"a":{"ary2":"s1","b2":2},"k1":"l"}', '$.*."ary2"') as A) items;
 ?column? 
-------
 s1



Maxxar, спасибо.
...
Рейтинг: 0 / 0
Json запрос с условием. Нужно вернуть без скобок
    #40111098
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вчера еще один вариант на работе сказали. Может даже кому то будет удобнее.

Я так понимаю его в учебнике нет.
Код: sql
1.
2.
3.
4.
5.
postgres=# select jsonb_path_query('{"a":{"ary2":"s1","b2":2},"k1":"l"}', '$.*."ary2"')->>0;
 ?column? 
----------
 s1
(1 строка)


.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Json запрос с условием. Нужно вернуть без скобок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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