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