powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Формирование JSON
7 сообщений из 7, страница 1 из 1
Формирование JSON
    #39250163
Николай М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Пытаюсь сформировать JSON файл. Для этого использую пакет APEX_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.
25.
declare
  l_ret clob;
  l_cur sys_refcursor;
begin
  open l_cur for
    with t as(Select 1 id, 'Название 1' nm from dual
			  union all
			  Select 2 id, 'Название 2' nm from dual
			  union all
			  Select 3 id, 'Название 3' nm from dual
			  union all
			  Select 4 id, 'Название 4' nm from dual
			  union all
			  Select 5 id, 'Название 5' nm from dual)
	Select t.*, cursor(Select 1 from dual where 1=2) cur from t;

    apex_json.initialize_clob_output;
    apex_json.open_object;
    apex_json.write('doc',l_cur);
    apex_json.close_object;
    l_ret:=apex_json.get_clob_output;
    apex_json.free_output;
  dbms_output.put_line(l_ret);

end;


В результате получаю следующее:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
{
"doc":[
{
"ID":1
,"NM":"\u041Dазва\u043Dие 1"
}
,{
"ID":2
,"NM":"\u041Dазва\u043Dие 2"
}
,{
"ID":3
,"NM":"\u041Dазва\u043Dие 3"
}
,{
"ID":4
,"NM":"\u041Dазва\u043Dие 4"
}
,{
"ID":5
,"NM":"\u041Dазва\u043Dие 5"
}
]
}


Т.е. все символы кириллицы преобразовываются в коды unicode.

Но если в исходный запрос добавить курсор -
Код: 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.
declare
  l_ret clob;
  l_cur sys_refcursor;
begin
  open l_cur for
    with t as(Select 1 id, 'Название 1' nm from dual
			  union all
			  Select 2 id, 'Название 2' nm from dual
			  union all
			  Select 3 id, 'Название 3' nm from dual
			  union all
			  Select 4 id, 'Название 4' nm from dual
			  union all
			  Select 5 id, 'Название 5' nm from dual)
	Select t.*, cursor(Select 1 from dual where 1=2) cur from t;

    apex_json.initialize_clob_output;
    apex_json.open_object;
    apex_json.write('doc',l_cur);
    apex_json.close_object;
    l_ret:=apex_json.get_clob_output;
    apex_json.free_output;

  dbms_output.put_line(l_ret);

end


вся кириллица на своем месте:
Код: javascript
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.
{
"doc":[
{
"ID":1
,"NM":"Название 1"
,"CUR":null
}
,{
"ID":2
,"NM":"Название 2"
,"CUR":null
}
,{
"ID":3
,"NM":"Название 3"
,"CUR":null
}
,{
"ID":4
,"NM":"Название 4"
,"CUR":null
}
,{
"ID":5
,"NM":"Название 5"
,"CUR":null
}
]
}



Подскажите, пожалуйста, как избавиться от unicode и почему в первом случае идет преобразование в коды, а во втором - нет?
...
Рейтинг: 0 / 0
Формирование JSON
    #39250176
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай М.Но если в исходный запрос добавить курсор -
сравниваю по буквам. Привлёк к сравнению бабушку, жучку и внучку) Не вижу разницы.
Вы бы растолковали разницу в коде и пометили её.
...
Рейтинг: 0 / 0
Формирование JSON
    #39250181
Николай М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
извините, в первом примере нужно так:
Код: 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.
declare
  l_ret clob;
  l_cur sys_refcursor;
begin
  open l_cur for
    with t as(Select 1 id, 'Название 1' nm from dual
			  union all
			  Select 2 id, 'Название 2' nm from dual
			  union all
			  Select 3 id, 'Название 3' nm from dual
			  union all
			  Select 4 id, 'Название 4' nm from dual
			  union all
			  Select 5 id, 'Название 5' nm from dual)
	Select t.* from t;

    apex_json.initialize_clob_output;
    apex_json.open_object;
    apex_json.write('doc',l_cur);
    apex_json.close_object;
    l_ret:=apex_json.get_clob_output;
    apex_json.free_output;
  dbms_output.put_line(l_ret);

end;
...
Рейтинг: 0 / 0
Формирование JSON
    #39250187
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай М.,
я не спец по запросам.
Зачем в курсоре делать второй раз
Select t.* from t;
?
...
Рейтинг: 0 / 0
Формирование JSON
    #39250193
Николай М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

t - это таблица, с которой достаются данные. Открывается курсор по этой таблице, а дальше с помощью пакета APEX_JSON, он записывается в объект json (clob_output).
...
Рейтинг: 0 / 0
Формирование JSON
    #39250290
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай М.Petro123,

t - это таблица, с которой достаются данные. Открывается курсор по этой таблице, а дальше с помощью пакета APEX_JSON, он записывается в объект json (clob_output).
тогда убери from dual;
В общем, сейчас я занят.
Направления поиска:
- убери всё лишнее и опять полный пример с ошибкой и без неё.
- руками склетиь JSON, может в плагине ошибка...
и т.д.
До завтра.
...
Рейтинг: 0 / 0
Формирование JSON
    #39386587
Semio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николай М.,Скажите,пожалуйста, Вы нашли решение? У меня происходит точно то же самое
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Формирование JSON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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