に最終更新
JSON_PARSE
説明
JSON 文字列をバイナリ形式の JSON に解析します。解析失敗時に必要な動作に応じて、次の JSON_PARSE 系関数を使用できます。
JSON_PARSEは JSON 文字列を解析します。無効な JSON 文字列の場合はエラーになります。JSON_PARSE_ERROR_TO_NULLは JSON 文字列を解析します。無効な JSON 文字列の場合は NULL を返します。JSON_PARSE_ERROR_TO_VALUEは JSON 文字列を解析します。無効な JSON 文字列の場合は default_json_value で指定した既定値を返します。
構文
JSON_PARSE (<json_str>)
JSON_PARSE_ERROR_TO_NULL (<json_str>)
JSON_PARSE_ERROR_TO_VALUE (<json_str>, <default_json_value>)
パラメータ
必須パラメータ
| パラメータ | 説明 |
|---|---|
<json_str> | 有効な JSON 文字列を内容に持つ文字列型の値。必須。 |
任意パラメータ
| パラメータ | 説明 |
|---|---|
<default_json_value> | <json_str> の解析に失敗した場合に <default_json_value> を返します。JSON 型の値で、NULL も指定できます。任意。 |
戻り値
Nullable<JSON> 型で、解析後の JSON 値を返します。入力文字列が NULL の場合は NULL を返します。解析に失敗した場合の戻り値は関数ごとに異なります。
使用上の注意
<json_str>が NULL の場合、結果も NULL です。JSON_PARSE、JSON_PARSE_ERROR_TO_NULL、JSON_PARSE_ERROR_TO_VALUEは、解析に失敗した場合の結果を除き、基本的に同じ動作をします。
例
- 正常な JSON 文字列の解析
SELECT json_parse('{"k1":"v31","k2":300}');+-------------------------------------+
| json_parse('{"k1":"v31","k2":300}') |
+-------------------------------------+
| {"k1":"v31","k2":300} |
+-------------------------------------+SELECT json_parse_error_to_null('{"k1":"v31","k2":300}');+---------------------------------------------------+
| json_parse_error_to_null('{"k1":"v31","k2":300}') |
+---------------------------------------------------+
| {"k1":"v31","k2":300} |
+---------------------------------------------------+SELECT json_parse_error_to_value('{"k1":"v31","k2":300}','{}');+---------------------------------------------------------+
| json_parse_error_to_value('{"k1":"v31","k2":300}','{}') |
+---------------------------------------------------------+
| {"k1":"v31","k2":300} |
+---------------------------------------------------------+SELECT json_parse_error_to_value('{"k1":"v31","k2":300}', NULL);+----------------------------------------------------------+
| json_parse_error_to_value('{"k1":"v31","k2":300}', NULL) |
+----------------------------------------------------------+
| {"k1":"v31","k2":300} |
+----------------------------------------------------------+ - 無効な JSON 文字列の解析
SELECT json_parse('invalid json');ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Parse json document failed at row 0, error: [INTERNAL_ERROR]simdjson parse exception:SELECT json_parse_error_to_null('invalid json');+------------------------------------------+
| json_parse_error_to_null('invalid json') |
+------------------------------------------+
| NULL |
+------------------------------------------+SELECT json_parse_error_to_value('invalid json');+-------------------------------------------+
| json_parse_error_to_value('invalid json') |
+-------------------------------------------+
| {} |
+-------------------------------------------+SELECT json_parse_error_to_value('invalid json', '{"key": "default value"}');+-----------------------------------------------------------------------+
| json_parse_error_to_value('invalid json', '{"key": "default value"}') |
+-----------------------------------------------------------------------+
| {"key":"default value"} |
+-----------------------------------------------------------------------+SELECT json_parse_error_to_value('invalid json', NULL);+-------------------------------------------------+
| json_parse_error_to_value('invalid json', NULL) |
+-------------------------------------------------+
| NULL |
+-------------------------------------------------+ - NULL パラメータ
SELECT json_parse(NULL);+------------------+
| json_parse(NULL) |
+------------------+
| NULL |
+------------------+SELECT json_parse_error_to_null(NULL);+--------------------------------+
| json_parse_error_to_null(NULL) |
+--------------------------------+
| NULL |
+--------------------------------+SELECT json_parse_error_to_value(NULL, '{}');+---------------------------------------+
| json_parse_error_to_value(NULL, '{}') |
+---------------------------------------+
| NULL |
+---------------------------------------+