Перейти к содержимому
Последнее обновление

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, полученный в результате разбора.

Примечания по использованию​

  1. Если <json_str> имеет значение NULL, результат также равен NULL.
  2. JSON_PARSE/JSON_PARSE_ERROR_TO_NULL/JSON_PARSE_ERROR_TO_VALUE работают практически одинаково и отличаются только результатом при ошибке разбора.

Примеры​

  1. Разбор корректной строки 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} |
    +----------------------------------------------------------+
  2. Разбор некорректной строки 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 |
    +-------------------------------------------------+
  3. Параметры со значением 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 |
    +---------------------------------------+