JSON_OBJECT
JSON_on_null_clause::=
JSON_returning_clause::=
目的
SQL/JSONファンクションJSON_OBJECTでは、その入力として、1つ以上のプロパティのキーと値のペアを取得します。これは、それらのキーと値のペアごとのオブジェクト・メンバーを含むJSONオブジェクトを戻します。
[KEY] string VALUE expr
この句を使用して、プロパティのキーと値のペアを指定します。
-
KEYはオプションで、セマンティクスを明確にするために使用されます。 -
stringを使用して、大/小文字を区別するテキスト・リテラルとしてプロパティ・キー名を指定します。 -
exprを使用して、プロパティ値を指定します。exprには、SQL数値リテラル、テキスト・リテラル、日付、タイムスタンプのいずれかに評価される任意の式を指定できます。日付およびタイムスタンプのデータ型は、生成されるJSONオブジェクトまたは配列に、ISO日付書式に従ったJSON文字列として出力されます。exprが数値リテラルと評価される場合は結果のプロパティ値がJSON数値になり、そうでない場合は結果のプロパティ値が二重引用符で囲まれた大/小文字を区別するJSON文字列値になります。
FORMAT JSON
入力式の後にFORMAT JSONを指定すると、結果の値がJSONデータを表し、出力で引用符で囲まれないことを宣言できます。
JSON_on_null_clause
この句を使用して、exprがNULLと評価される場合のこのファンクションの動作を指定します。
-
NULLONNULL- NULL ON NULLが指定されている場合は、JSON NULL値は、指定したキーの値として使用されます。SELECT JSON_OBJECT('key1' VALUE NULL) evaluates to {"key1" : null} -
ABSENTONNULL- この句を指定した場合は、JSONオブジェクトからプロパティのキーと値のペアが省略されます。
JSON_returning_clause
この句を使用して、戻り値のタイプを指定します。次のいずれかです。
-
バイト数または文字数としてサイズを指定する
VARCHAR2。デフォルトは、バイトです。この句を省略するか、size値を指定せずにこの句を指定した場合、JSON_ARRAYはVARCHAR2(4000)型の文字列を戻します。詳細は、「VARCHAR2データ型」を参照してください。SQLでVARCHAR2データ型を指定する場合、サイズを指定する必要があります。ただし、JSON_returning_clauseではサイズを省略できます。 -
シングルバイト文字またはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクトを戻す
CLOB。 -
AL32UTF8文字セットのバイナリ・ラージ・オブジェクトを戻すBLOB。
STRICT
STRICT句を指定して、JSON生成ファンクションの出力が正しいJSONであることを確認します。チェックに失敗すると、構文エラーが発生します。
例1: FORMAT JSONが使用されていないため、出力文字列は引用符内に表示されます
SELECT JSON_OBJECT ('name' value 'Foo') FROM DUAL
Output:
JSON_OBJECT('NAME'VALUE'FOO'FORMATJSON)
-------------------------------------------------
{"name":"Foo"}例2: FORMAT JSONが使用されている場合、出力文字列は引用符で囲まれません。
SELECT JSON_OBJECT ('name' value 'Foo' FORMAT JSON ) FROM DUAL
Output:
JSON_OBJECT('NAME'VALUE'FOO'FORMATJSON)
-------------------------------------------------
{"name":Foo}例3: FORMAT JSON STRICTが使用されている場合、JSON構文エラーになります。
SELECT JSON_OBJECT ('name' value 'Foo' FORMAT JSON STRICT ) FROM DUAL
Output:
ORA-40441: JSON syntax errorWITH UNIQUE KEYS
WITH UNIQUE KEYSを指定すると、生成されたJSONオブジェクトが一意キーを持つことが保証されます。
例
次の例では、それぞれが2つのキーと値のペアを含むJSONオブジェクトを戻します。
SELECT JSON_OBJECT (
KEY 'deptno' VALUE d.department_id,
KEY 'deptname' VALUE d.department_name
) "Department Objects"
FROM departments d
ORDER BY d.department_id;
Department Objects
----------------------------------------
{"deptno":10,"deptname":"Administration"}
{"deptno":20,"deptname":"Marketing"}
{"deptno":30,"deptname":"Purchasing"}
{"deptno":40,"deptname":"Human Resources"}
{"deptno":50,"deptname":"Shipping"}
. . .


