JSON_PARSE
更新时间:2025-10-16
描述
将原始 JSON 字符串解析成 JSON 二进制格式。为了满足不同的异常数据处理需求,提供不同的 JSON_PARSE 系列函数,具体如下:
- JSON_PARSE 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,报错。
- JSON_PARSE_ERROR_TO_INVALID 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
- JSON_PARSE_ERROR_TO_NULL 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
- JSON_PARSE_ERROR_TO_VALUE 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回参数 default_json_str 指定的默认值。
- JSON_PARSE_NOTNULL 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
别名
- JSONB_PARSE 同
JSON_PARSE - JSONB_PARSE_ERROR_TO_INVALID 同
JSON_PARSE_ERROR_TO_INVALID - JSONB_PARSE_ERROR_TO_NULL 同
JSON_PARSE_ERROR_TO_NULL - JSONB_PARSE_ERROR_TO_VALUE 同
JSON_PARSE_ERROR_TO_VALUE - JSONB_PARSE_NOTNULL 同
JSON_PARSE_NOTNULL
语法
SQL
1JSON_PARSE (<json_str>)
SQL
1JSON_PARSE_ERROR_TO_INVALID (<json_str>)
SQL
1JSON_PARSE_ERROR_TO_NULL (<json_str>)
SQL
1JSON_PARSE_ERROR_TO_VALUE (<json_str>, <default_json_str>)
SQL
1JSONB_PARSE_NOTNULL (<json_str>)
参数
| 参数 | 描述 |
|---|---|
<json_str> |
要提取的 JSON 类型的参数或者字段 |
<default_json_str> |
当输入的字符串不是合法的 JSON 字符串时,返回参数 default_json_str 指定的默认值。 |
返回值
- json_str 为 NULL 时,都返回 NULL
-
json_str 为非法 JSON 字符串时
- JSON_PARSE 报错
- JSON_PARSE_ERROR_TO_INVALID 返回 NULL
- JSON_PARSE_ERROR_TO_NULL 返回 NULL
- JSON_PARSE_ERROR_TO_VALUE 返回参数 default_json_str 指定的默认值
- JSON_PARSE_NOTNULL 返回 NULL
示例
- 正常 JSON 字符串解析
SQL
1SELECT json_parse('{"k1":"v31","k2":300}');
Text
1+--------------------------------------+
2| json_parse('{"k1":"v31","k2":300}') |
3+--------------------------------------+
4| {"k1":"v31","k2":300} |
5+--------------------------------------+
SQL
1SELECT json_parse_error_to_invalid('{"k1":"v31","k2":300}');
Text
1+-------------------------------------------------------+
2| jsonb_parse_error_to_invalid('{"k1":"v31","k2":300}') |
3+-------------------------------------------------------+
4| {"k1":"v31","k2":300} |
5+-------------------------------------------------------+
SQL
1SELECT json_parse_notnull('{"a":"b"}');
Text
1+----------------------------------+
2| jsonb_parse_notnull('{"a":"b"}') |
3+----------------------------------+
4| {"a":"b"} |
5+----------------------------------+
SQL
1SELECT json_parse_error_to_value('{"k1":"v31","k2":300}','{}');
Text
1+-----------------------------------------------------------+
2| jsonb_parse_error_to_value('{"k1":"v31","k2":300}', '{}') |
3+-----------------------------------------------------------+
4| {"k1":"v31","k2":300} |
5+-----------------------------------------------------------+
- 非法 JSON 字符串解析
SQL
1SELECT json_parse('invalid json');
Text
1ERROR 1105 (HY000): errCode = 2, detailMessage = json parse error: Invalid document: document must be an object or an array for value: invalid json
SQL
1SELECT json_parse_error_to_invalid('invalid json');
Text
1+----------------------------------------------+
2| jsonb_parse_error_to_invalid('invalid json') |
3+----------------------------------------------+
4| NULL |
5+----------------------------------------------+
SQL
1SELECT json_parse_notnull('invalid json');
Text
1+-------------------------------------------+
2| jsonb_parse_error_to_null('invalid json') |
3+-------------------------------------------+
4| NULL |
5+-------------------------------------------+
SQL
1SELECT json_parse_error_to_value('invalid json', '{}');
Text
1+--------------------------------------------------+
2| json_parse_error_to_value('invalid json', '{}') |
3+--------------------------------------------------+
4| {} |
5+--------------------------------------------------+
