JSON_SERIALIZE

構文

目的

json_serializeでは、任意のSQLデータ型(BLOBCLOBJSONまたはVARCHAR2)のJSONデータを指定でき、そのテキスト表現が返されます。通常は、問合せの結果を変換するために使用します。

json_serializeを使用すると、バイナリのJSONデータをテキスト形式(CLOBまたはVARCHAR2)に変換することや、フォーマット出力やASCII Unicode以外の文字のエスケープによってテキストのJSONデータを変換することができます。

Oracle SQLファンクションvector_serializeをJSON型インスタンスに適用すると、標準ではないOracleスカラーJSON値が標準JSONスカラー値として返されます。

vector_serializeVECTOR型のインスタンスに適用すると、テキスト形式のJSON配列の数値が返されます。

ノート:

SQLファンクション vector_serializeを使用して、VECTORインスタンスをテキスト形式のJSON配列の数値にシリアライズできます。(ファンクションjson_serializeは、JSONデータのみをシリアライズします。)VECTOR_SERIALIZEを参照してください

関連項目:

『JSON開発者ガイド』Oracle SQLファンクションJSON_SERIALIZE

expr

exprは入力式です。JSONVARCHAR2CLOBまたはBLOBのいずれかの型になります。

JSON_returning_clause::=

JSON_returning_clauseを使用すると、ファンクションの戻り型を指定できます。BOOLEANBLOBCLOBJSONまたはVARCHAR2のいずれか。

デフォルトの戻り型は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_clauseTRUNCATEを指定すると、戻り型の値が大きすぎてバッファに収まらない場合は、エラーが発生するかわりに切り捨てられます。

SELECT JSON_SERIALIZE ('{a:[1,2,3,4]}' RETURNING VARCHAR2(3) TRUNCATE ERROR ON ERROR) from dual
–-------
{"a