Oracle Databaseでは、JSON_OBJECT()
関数は、一連のキーと値のペアまたは1つのオブジェクトタイプインスタンスからJSONオブジェクトを作成します。
構文
構文は次のようになります:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
場所:
-
[ KEY ] key_expr VALUE val_expr
プロパティのキーと値のペアを指定します。 -
FORMAT JSON
入力文字列がJSONであるため、出力で引用符で囲まれないことを示します。 -
JSON_on_null_clause
expr
のときに使用する動作を指定します nullに相当します(つまり、出力にnull値を含めるか、含めないかのいずれかです)。 -
JSON_returning_clause
戻り値のタイプを指定します。 -
STRICT
JSON生成関数の出力が正しいJSONであるかどうかを確認します。チェックに失敗すると、構文エラーが発生します。 WITH UNIQUE KEYS
生成されたJSONオブジェクトが一意のキーを持つことを保証します。
例
これがどのように機能するかを示す例です:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
結果:
{"score":37}
KEY
一部はオプションであるため、以下でも同じ結果が得られます。
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
結果:
{"score":37}
複数のキー/値のペア
複数のキーと値のペアを使用した例を次に示します。
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
結果:
{"fname":"Homer","lname":"Escobar","score":237}
ネストされたJSON
渡す値の1つにJSONが含まれている場合は、FORMAT JSON
を使用できます。 JSONが含まれていることを指定する引数であり、出力で引用符で囲まないようにする必要があります。
例:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
結果:
{"details":{"name": "Peter", "score": 64}}
FORMAT JSON
を削除するとどうなりますか パート:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
結果:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
データベースの例
次のクエリを実行するとします。
SELECT *
FROM regions;
結果:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
これは同じクエリですが、選択した列がJSON_OBJECT()
に渡されます 機能:
SELECT JSON_OBJECT(*)
FROM regions;
結果:
{"REGION_ID":1,"REGION_NAME":"Europe"} {"REGION_ID":2,"REGION_NAME":"Americas"} {"REGION_ID":3,"REGION_NAME":"Asia"} {"REGION_ID":4,"REGION_NAME":"Middle East and Africa"}
そして、ここでは、関数に渡される列が1つだけです:
SELECT JSON_OBJECT(region_name)
FROM regions;
結果:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
この関数の詳細については、Oracleのドキュメントを参照してください。