に最終更新
JSON_ARRAY
説明
指定した要素を含む JSON 配列を生成します。パラメータを指定しない場合は空の配列を返します。
構文
JSON_ARRAY([<expression>, ...])
パラメータ
可変長パラメータ:
<expression>: JSON 配列に含める要素です。NULL を含む異なる型の値を、一つまたは複数指定できます。
戻り値
JSON: パラメータのリストから構成される JSON 配列を返します。
使用上の注意
- JSON_ARRAY は
TO_JSON関数を暗黙的に呼び出して、さまざまな型のパラメータを JSON 値に変換します。そのため、パラメータにはTO_JSONがサポートする型を指定してください - NULL は JSON の null に変換されます。配列内に null 値を残したくない場合は、
JSON_ARRAY_IGNORE_NULL関数を使用できます。 - パラメータの型が
TO_JSONでサポートされない場合はエラーになります。たとえば、事前にパラメータを String 型に変換できます。select JSON_ARRAY(CAST(NOW() as String));NOW() 関数は DateTime 型を返すため、CAST 関数で String 型に変換する必要があります
- パラメータが JSON 文字列で、その内容を JSON オブジェクトとして配列に追加する場合は、
JSON_PARSE関数を明示的に呼び出して解析してください。select JSON_ARRAY(JSON_PARSE('{"key": "value"}'));
例
- 通常のパラメータ
select json_array() as empty_array, json_array(1) v1, json_array(1, 'abc') v2;+-------------+------+-----------+
| empty_array | v1 | v2 |
+-------------+------+-----------+
| [] | [1] | [1,"abc"] |
+-------------+------+-----------+ - NULL パラメータ
select json_array(null) v1, json_array(1, null, 'I am a string') v2;+--------+--------------------------+
| v1 | v2 |
+--------+--------------------------+
| [null] | [1,null,"I am a string"] |
+--------+--------------------------+ - サポートされないパラメータの型
select json_array('item1', map(123, 'abc'));ERROR 1105 (HY000): errCode = 2, detailMessage = Can not find the compatibility function signature: to_json(MAP<TINYINT,VARCHAR(3)>) - MAP 型のパラメータは明示的に JSON に変換できます
select json_array(1, cast(map('key', 'value') as json));+--------------------------------------------------+
| json_array(1, cast(map('key', 'value') as json)) |
+--------------------------------------------------+
| [1,{"key":"value"}] |
+--------------------------------------------------+ - JSON 文字列は文字列として配列に追加されます
select json_array('{"key1": "value", "key2": [1, "I am a string", 3]}');+------------------------------------------------------------------+
| json_array('{"key1": "value", "key2": [1, "I am a string", 3]}') |
+------------------------------------------------------------------+
| ["{\"key1\": \"value\", \"key2\": [1, \"I am a string\", 3]}"] |
+------------------------------------------------------------------+ json_parseで JSON 文字列を解析してからjson_arrayに渡せますselect json_array(json_parse('{"key1": "value", "key2": [1, "I am a string", 3]}'));+------------------------------------------------------------------------------+
| json_array(json_parse('{"key1": "value", "key2": [1, "I am a string", 3]}')) |
+------------------------------------------------------------------------------+
| [{"key1":"value","key2":[1,"I am a string",3]}] |
+------------------------------------------------------------------------------+