Последнее обновление
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, допускается NULL. Если разбор<json_str>завершается ошибкой, в качестве значения по умолчанию возвращается<default_json_value>.
Возвращаемое значение
Nullable<JSON> Возвращает объект JSON, полученный в результате разбора.
Примечания по использованию
- Если
<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 |
+---------------------------------------+