CPA-Мастер
Блог о заработке на партнёрских программах в CPA-сетях

Работа с JSON в PL/SQL (пакет APEX_JSON)

Наряду с другими технологиями (например, XML) при коммуникации клиента с сервером применяется нотация объектов JavaScript (JSON). На сервере данные, закодированные в JavaScript-объекте, перед обработкой нужно разкодировать. О том, как это сделать в PL/SQL и пойдёт речь в этом посту.

В моём примере переменная var_json содержит строку, в которой закодирован JSON-объект с тремя атрибутами — число, строка и массив из строк.

var_json varchar2(1000) := '{ 
    "attribute1": 1, 
    "attribute2" : "string", 
    "attribute3": ["member1", "member2"] 
}';
var_count NUMBER;

Для начала эту строку надо спарсить процедурой parse.

apex_json.parse(var_json);

После этого число и строку можно выдёргивать функциями get_number и get_varchar2.

dbms_output.put_line('attribute1 is ' || apex_json.get_number(p_path => 'attribute1'));
dbms_output.put_line('attribute2 is ' || apex_json.get_varchar2(p_path => 'attribute2'));

Для определения длины массива (из скольки элементов состоит массив) существует функция get_count. Переменная var_count в этом случае типа number.

var_count := apex_json.get_count(p_path => 'attribute3');
dbms_output.put_line('var_count is ' || var_count);

Элементы массива можно выбрать по их индексу. Выводить элементы массива можно например в цикле (читайте также пост про циклы FOR и WHILE в PL/SQL).

dbms_output.put_line('attribute3[1] is ' || apex_json.get_varchar2(p_path => 'attribute3[1]'));
dbms_output.put_line('attribute3[2] is ' || apex_json.get_varchar2(p_path => 'attribute3[2]'));

Кому этот пост показался недостаточно развёрнутым, пускай курит официальную документацию пакета APEX_JSON и более подробное руководство (и то, и другое на английском).

Понравился пост? Поделись в соцсетях и подписывайся на аккаунты в Twitter и Facebook!

Leave a comment

Your email address will not be published.

*