Смотрите в сторону функции ListAgg - она объединит все значения через разделитель.
Потом останется только обрамить результат в скобки:
select '[' || ListAgg(item, ',') over (order by rownum) || ']' as item_arr
from table
PS: ListAgg работает с данными, которые можно привести к varchar/varchar2. То есть, у вас есть физическое ограничение в 4000 символов в результирующей строке. Или у вас данные изначально в BLOB/CLOB.
В этих случаях вам нужно использовать хранимую функцию, поскольку в чистом SQL вы не сможете работать с безразмерными атрибутами.
PPS: А вообще, нужно избавиться от JSON и нормализовать таблицу.
PPPS: Если вы делаете API, то формировать JSON для ответа API - это не функция СУБД, этим должна заниматься прослойка перед СУБД.