172 похожих чатов

Ребята всем привет! Если у меня хранится в постгресе поле

objects типа json [{"tag": "x"}, {"tag": "y"}, {"tag": "z"}]
как я могу из этого поля вытянуть все tag в отдельный массив, собрать с каждого объекта, чтоб полчился в итоге следущий результат селекта ["x", "y", "z"] ? так можно сделать?

19 ответов

12 просмотров

jsonb же?

Александр-Орловский Автор вопроса
Pavel Mozhchil
jsonb же?

Нет, тип в БД у этого поля просто json

json_field::json#>'{tag}'

но по моему это не классический json объект На верхнем уровне у json должен быть тип map[string]interface

Александр-Орловский Автор вопроса
Pavel Mozhchil
json_field::json#>'{tag}'

Сейчас попробую, спасибо

Alex
с чего вы взяли?

Ну ок Есть два типа []json и json_object

Alex
где есть?

мы что будем это обсуждать) ? Или все таки предложите решение?

Александр-Орловский Автор вопроса
Pavel Mozhchil
json_field::json#>'{tag}'

что то не сработало, select вернул null. а pgadmin подсказывает что поле действительно типа json: https://i.imgur.com/ecFnB9t.png

Pavel Mozhchil
Пруфы бы

https://datatracker.ietf.org/doc/html/rfc8259

Alex
https://datatracker.ietf.org/doc/html/rfc8259

ну ок но в спецификации явно указано деление begin-array и begin-object и подходы для их разбора разные

create table temp.data ( id bigserial, json_field json ); insert into temp.data (json_field) values ('[{"tag": "x"}, {"tag": "y"}, {"tag": "z"}]'), ('[{"tag": "x"}, {"tag": "y"}]'); select id , json_agg(tag_value) as json_new_field from ( select id , json_array_elements(json_field) ->> 'tag' as tag_value from temp.data ) s group by id сложновато, конечно

Pavel Mozhchil
ну ок но в спецификации явно указано деление begin...

ну логично блин, что array начинается с квадратной скобки, а object с фигурной. важно вот это: JSON-text = ws value ws value = false / null / true / object / array / number / string

Александр-Орловский Автор вопроса
Anton Shelishkevich
create table temp.data ( id bigserial,...

спасибо, сложновато, но работает как раз как нужно) думал как то попроще можно, но что то похоже нет)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта