目的
NEW JSONコンストラクタは、JSON型インスタンスを割り当てます。このコンストラクタは、引数(デフォルト コンストラクタ)なしで使用できますが、JSONインスタンスの値、文字セット、またはストレージ形式を設定する引数とともに使用することもできます。結果として得られるJSONインスタンスは、JSON型を列に挿入するために使用でき、また関数またはメソッドへのJSON型引数として使用できます。
構文
- 'JSON_String'
- 結果として得られるJSONインスタンスの値となる文字列です。
- LATIN
- UNICODE
- 結果として得られるJSONインスタンスの文字セット。
- BSON
- UBJSON
- 結果として得られるJSONインスタンスのストレージ形式。
- JSON_binary_data
- 結果として得られるJSONインスタンスの値となるJSONバイナリ データです。
ルールと制限
- LATINの16,776,192文字またはJSONテキスト データのUNICODEの8,388,096文字
- 16,776,192バイトのバイナリ データ
JSON型を列に挿入する場合や関数やメソッドで引数として使用する場合は、このデータが絶対最大長未満の可能性があるので、JSONデータの実際の長さがこの特定のインスタンスに指定されている最大長以下であることがチェックされます。現在の使用量に対してデータが大きすぎる場合は、エラーが報告されます。切り捨ては行なわれません。
使用上の注意
デフォルト コンストラクタでは、引数はコンストラクタ式に渡されません。NEW JSON()は、ユーザーの文字セットに基づいた文字セットで空のJSON型の値を初期化します。データはnull文字列に設定されます。デフォルトのストレージ形式はテキストです。
空のJSONオブジェクトを引数としてコンストラクタに渡す場合(例えば、NEW JSON(''))、コンストラクタは空のJSONオブジェクトを返します。
NEW JSONコンストラクタを使用して、バイナリ形式で格納されているJSON文書を構成できます。ただし、このコンストラクタの結果をクライアントに送信する場合は、バイナリ データのテキスト表現を含むCLOBとして送信されます。
JSONエンティティ参照(ドット表記構文)で説明されているように、JSONエンティティ参照をコンストラクタ式の最後に追加できます。
例: デフォルトのJSONコンストラクタ
NEW JSON();
例: テキスト文字列の引数を含むJSONコンストラクタ
NEW JSON ('{"name" : "cameron", "age" : 24}') NEW JSON ('{"name" : "cameron", "age" : 24}', LATIN)
例: バイナリ データ引数を含むJSONコンストラクタ
- 0x00000016: BSONデータの全長
- 0x02: キーの後に続くデータが'string'型であることを示す
- 0x68、0x65、0x6C、0x6C、0x6F, 0x00: キーとして解釈される、nullで終わる文字列'hello'
- 0x00000006: キーの後に続く文字列値の長さ
- 0x77、0x6F, 0x72、0x6C、0x64、0x00: 値として解釈される、nullで終わる文字列'world'
- 0x00: 文書の終了を示すnull終了子
データは、テキスト形式で次のようにJSON文書を表わします。
{"hello":"world"}
/*Creates a JSON document stored as BSON, explicitly*/ SELECT NEW JSON ('160000000268656C6C6F0006000000776F726C640000'xb, BSON);