メインコンテンツまでスキップ
バージョン: 4.x

JSON_OBJECT

デスクリプション

指定されたKey-Valueを含むjsonオブジェクトを生成します。 KeyがNULLまたはパラメータの数が奇数の場合、例外エラーが返されます。

Syntax

JSON_OBJECT (<key>, <value>[,<key>, <value>, ...])

パラメーター

パラメーター説明
<key>生成されるjsonオブジェクトのKey-ValueのKey値。
<value>生成されるjsonオブジェクトのKey-ValueのValue値。

使用上の注意

  • 慣例により、引数リストはキーと値が交互に並ぶ構成になります。
  • Key引数はテキストに変換されます。
  • Value引数はjsonに変換可能な形式として変換され、現在array/struct/map/jsonをvalueとしてサポートしています。

戻り値

jsonオブジェクトを返します。特別なケースは以下の通りです:

  • パラメーターが渡されない場合、空のjsonオブジェクトを返します。
  • 渡されたパラメーターの数が奇数の場合、例外エラーを返します。
  • 渡されたKeyがNULLの場合、例外エラーを返します。
  • 渡されたValueがNULLの場合、返されるjsonオブジェクト内のKey-ValueペアのValue値はNULLになります。

select json_object();
+---------------+
| json_object() |
+---------------+
| {} |
+---------------+
select json_object('time',curtime());
+--------------------------------+
| json_object('time', curtime()) |
+--------------------------------+
| {"time": "10:49:18"} |
+--------------------------------+
SELECT json_object('id', 87, 'name', 'carrot');
+-----------------------------------------+
| json_object('id', 87, 'name', 'carrot') |
+-----------------------------------------+
| {"id": 87, "name": "carrot"} |
+-----------------------------------------+
select json_object('username',null);
+---------------------------------+
| json_object('username', 'NULL') |
+---------------------------------+
| {"username": NULL} |
+---------------------------------+
select json_object(null,null);
ERROR 1105 (HY000): errCode = 2, detailMessage = json_object key can't be NULL: json_object(NULL)
-- support array as object value
SELECT json_object('id', 1, 'level', array('"aaa"','"bbb"'));
+------------------------------------------------------------------------------------------------------+
| json_object('id', cast(1 as VARCHAR(65533)), 'level', cast(array('"aaa"', '"bbb"') as JSON), '6267') |
+------------------------------------------------------------------------------------------------------+
| {"id":1,"level":["\"aaa\"","\"bbb\""]} |
+------------------------------------------------------------------------------------------------------+
-- support map as object value
SELECT json_object('id', 1, 'level', map('a', 'b', 'c', 'd'));
+------------------------------------------------------------------------------------------------------+
| json_object('id', cast(1 as VARCHAR(65533)), 'level', cast(map('a', 'b', 'c', 'd') as JSON), '6267') |
+------------------------------------------------------------------------------------------------------+
| {"id":1,"level":{"a":"b","c":"d"}} |
+------------------------------------------------------------------------------------------------------+
-- support struct as object value
SELECT json_object('id', 1, 'level', named_struct('name', 'a', 'age', 1));
+------------------------------------------------------------------------------------------------------------------+
| json_object('id', cast(1 as VARCHAR(65533)), 'level', cast(named_struct('name', 'a', 'age', 1) as JSON), '6267') |
+------------------------------------------------------------------------------------------------------------------+
| {"id":1,"level":{"name":"a","age":1}} |
+------------------------------------------------------------------------------------------------------------------+
-- support json as object value
SELECT json_object('id', 1, 'level', cast('{\"a\":\"b\"}' as JSON));
+------------------------------------------------------------------------------------------+
| json_object('id', cast(1 as VARCHAR(65533)), 'level', cast('{"a":"b"}' as JSON), '6267') |
+------------------------------------------------------------------------------------------+
| {"id":1,"level":{"a":"b"}} |
+------------------------------------------------------------------------------------------+