21 Oracle SQLファンクションJSON_SERIALIZE

Oracle SQLファンクションjson_serializeは、入力としてJSONデータ(任意のSQLデータ型、VARCHAR2CLOBまたはBLOB)を受け取り、そのテキスト表現(VARCHAR2CLOBまたはBLOBデータ)を返します。VARCHAR2(4000)はデフォルトの戻り型です。

通常、問合せの結果を変換するには、json_serializeを使用します。エラー句およびRETURNING句がサポートされています。結果にフォーマット出力を指定でき、結果を切り捨てて戻り型に適合させることができます。

ファンクションjson_serializeは、常にJSON標準(RFC 4627)に準拠するJSONデータを生成します。返されるデータに使用されるのは、JSON言語の標準のデータ型(オブジェクト、配列、スカラー型の文字列、数値、ブールおよびNull)のみです。

json_serializeを使用すると、バイナリのJSONデータをテキスト形式(CLOBまたはVARCHAR2)に変換することや、フォーマット出力やASCII Unicode以外の文字のエスケープによってテキストのJSONデータを変換することができます。重要なユースケースとして、BLOB列に格納されているJSONデータをシリアライズする場合があげられます。BLOBの結果はAL32UTF8文字セットです。ただし、json_serializeによって返されるデータ型に関係なく、返されるデータはテキストのJSONデータを表します。

関連項目:

Oracle SQLファンクションjson_serializeの詳細は、Oracle Database SQL言語リファレンスを参照してください

例21-1 JSON_SERIALIZEを使用したBLOBデータのフォーマット出力テキストへの変換

この例では、表j_purchaseorderの列po_documentから選択されたフィールドPONumberデータの値として1600を持つJSON発注書をシリアライズしてフォーマット出力します。戻り値のデータ型はVARCHAR2(4000) (デフォルトの戻り型)です。

例4-2に、このような発注書のデータをVARCHAR2表に挿入する方法を示します。ただし、json_serializeは、BLOBデータのシリアライズに特に役立ちます。

SELECT json_serialize(po_document PRETTY) FROM j_purchaseorder;