powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / парсинг недоджейсона
12 сообщений из 12, страница 1 из 1
парсинг недоджейсона
    #39327036
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, такая ситуация. Народ в java делает типа джейсон, но не создает наименования полей для экономии места, но очень бы хотелось парсить его средствами оракла, чтобы не городить велосипед. Есть какие-нибудь мысли?

Пример json:
Код: plaintext
1.
2.
3.
{
"data":[[26,"Alex",2],[17,"Tom",1],[31,"Jane",1],[18,"Dim"1]]
}

я бы хотел получить каждый элемент массива отдельной строкой и соответственно три столбца.

Единственная мысль - это вписывать как-нибудь имена полей фейковые а-ля a, b, c, но так как джейсоны могут быть довольно большие (clob) не хотелось бы на это заморачиваться, ибо придётся писать процедурную логику, которая рано или поздно сглючит и очевидно будет ещё и тормозить.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327083
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в последнем элементе косяк:
Код: plaintext
1.
2.
3.
{
"data":[[26,"Alex",2],[17,"Tom",1],[31,"Jane",1],[18,"Dim",1]]
}
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327094
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

pipelined + substr в цикле - 5 минут....
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327103
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему это назвали недоджейсоном? Нормальный массив массивов по ключу "data". Я подобное в браузер гоняю, только еще рядом имена полей передаю.
Или Оракл не умеет парсить произвольный JSON? Простите, не силен по этой части.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327108
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakПочему это назвали недоджейсоном? Нормальный массив массивов по ключу "data". Я подобное в браузер гоняю, только еще рядом имена полей передаю.
Или Оракл не умеет парсить произвольный JSON? Простите, не силен по этой части.
+1, нормальный себе JSON, скопируйте в консоль любого браузера и убедитесь, что без единого слова ругани конвертнется в javascript объект.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327109
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, про массив я уже догнал, но пока не понимаю, как в json_table в json path указать номер элемента в массиве по индексу.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327177
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir+1, нормальный себе JSON

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SQL> CREATE TABLE TBL(JSON_DATA CLOB)
  2  /

Table created.

SQL> ALTER TABLE TBL
  2    ADD CONSTRAINT ensure_json
  3      CHECK(JSON_DATA IS JSON)
  4  /

Table altered.

SQL> INSERT INTO TBL (JSON_DATA)
  2      VALUES ('{
  3                       "data":[[26,"Alex",2],[17,"Tom",1],[31,"Jane",1],[18,"Dim"1]]
  4                      }')
  5  /
INSERT INTO TBL (JSON_DATA)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.ENSURE_JSON) violated


SQL>



SY.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327178
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, не заметил, "в последнем элементе косяк".

SY.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327194
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockАга, про массив я уже догнал, но пока не понимаю, как в json_table в json path указать номер элемента в массиве по индексу.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SELECT  *
  FROM  JSON_TABLE(
                   '
                    {
                     "data":[[26,"Alex",2],[17,"Tom",1],[31,"Jane",1],[18,"Dim",1]]
                    }
                   ',
                   '$.data[*][*]'
                   columns
                     item VARCHAR2(20) PATH '$'
                  )
/

ITEM
--------------------
26
Alex
2
17
Tom
1
31
Jane

ITEM
--------------------
1
18
Dim
1

12 rows selected.

SQL> 



SY.
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327217
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, спасибо. Догнал до моего косяка - я настойчиво ставил точку перед []
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327220
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT  *
  FROM  JSON_TABLE(
                   '
                    {
                     "data":[[26,"Alex",2],[17,"Tom",1],[31,"Jane",1],[18,"Dim",1]]
                    }
                   ',
                   '$.data[*]'
                   columns
                     id VARCHAR2(20) PATH '$[0]',
                     name VARCHAR2(20) PATH '$[1]',
                     type VARCHAR2(20) PATH '$[2]'
                  )
...
Рейтинг: 0 / 0
парсинг недоджейсона
    #39327223
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно вот итоговая версия чего мне надо было. спасибо за идею.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / парсинг недоджейсона
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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