21.1 パッケージの概要および例
JSONデータを含む文字列から読み取るには、まずparse()
を使用してその文字列を内部形式に変換します。次に、get_%
ルーチン(get_varchar2()
、get_number()
など)を使用して検索するデータおよびfind_paths_like()
にアクセスします。
あるいは、to_xmltype()
を使用してJSON文字列をXMLTypeに変換します。
このパッケージには、JSON形式の出力を生成するプロシージャも格納されています。オーバーロードされたopen_%()
、close_%()
およびwrite()
の各プロシージャを書込みに使用します。
例1
この例では、JSON文字列を解析し、メンバー変数"a"
の値を出力します。
DECLARE
s varchar2(32767) := '{ "a": 1, "b": ["hello", "world"]}';
BEGIN
apex_json.parse(s);
sys.dbms_output.put_line('a is '||apex_json.get_varchar2(p_path => 'a'));
END;
例2
この例では、JSON文字列をXMLに変換し、XMLTABLE
を使用してメンバー値を問い合せます。
select col1, col2
from xmltable (
'/json/row'
passing apex_json.to_xmltype('[{"col1": 1, "col2": "hello"},'||
'{"col1": 2, "col2": "world"}]')
columns
col1 number path '/row/col1',
col2 varchar2(5) path '/row/col2' );
例3
この例では、ネストされたJSONオブジェクトをHTPバッファに書き込みます。
BEGIN
apex_json.open_object; -- {
apex_json.write('a', 1); -- "a":1
apex_json.open_array('b'); -- ,"b":[
apex_json.open_object; -- {
apex_json.write('c',2); -- "c":2
apex_json.close_object; -- }
apex_json.write('hello'); -- ,"hello"
apex_json.write('world'); -- ,"world"
apex_json.close_all; -- ]
-- }
END;
親トピック: APEX_JSON