JSON_SERIALIZE
構文
目的
json_serialize
は、任意のSQLデータ型(JSON
、VARCHAR2
、CLOB
またはBLOB
)のJSONデータを入力として使用し、そのテキスト表現を返します。通常は、問合せの結果を変換するために使用します。
json_serialize
を使用すると、バイナリのJSONデータをテキスト形式(CLOB
またはVARCHAR2
)に変換することや、フォーマット出力やASCII Unicode以外の文字のエスケープによってテキストのJSONデータを変換することができます。
expr
expr
は入力式です。JSON
、VARCHAR2
、CLOB
またはBLOB
のいずれかの型になります。
JSON_returning_clause::=
JSON_returning_clause
を使用すると、ファンクションの戻り型を指定できます。VARCHAR2
、CLOB
またはBLOB
のいずれか。
デフォルトの戻り型はVARCHAR2(4000)
です。
戻り型がRAW
またはBLOB
の場合は、 UTF8
エンコードしたJSONテキストが含まれます。
PRETTY
結果を読みやすい形式にする場合は、PRETTY
を指定します。
ASCII
JSONエスケープ・シーケンスを使用して非ASCII文字を出力する場合は、ASCII
を指定します。
ORDERED
ORDERED
は、キーと値のペアをアルファベットの昇順で並べ替える場合に指定します。ORDERED
は、PRETTY
およびASCII
と組み合せることができます。
例
SELECT JSON_SERIALIZE('{price:20, currency:" €"}' ASCII PRETTY ORDERED) from dual; { "currency" : "\u20AC", "price" : 20 }
TRUNCATE
結果ドキュメントのテキスト出力を、指定した戻り型のバッファに収める場合はTRUNCATE
を指定します。
JSON_on_error_clause::=
JSON_on_error_clause
を指定すると、処理エラーの処理を制御できます。
ERROR ON ERROR
がデフォルトです。
EMPTY ON ERROR
はサポートされません。
JSON_on_error_clause
でTRUNCATE
を指定すると、戻り型の値が大きすぎてバッファに収まらない場合は、エラーが発生するかわりに切り捨てられます。
例
SELECT JSON_SERIALIZE ('{a:[1,2,3,4]}' RETURNING VARCHAR2(3) TRUNCATE ERROR ON ERROR) from dual –------- {"a