プライマリ・コンテンツに移動

Oracle® Application Express APIリファレンス リリース5.1 E85937-02 |
| 目次 | 索引

前 | 次 |

# 15.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;