跳到主要内容
版本:Stable-3.1

get_json_string,get_json_object

功能

解析并获取 json_strjson_path 指定的字符串。如果 json_strjson_path 格式不正确,或者无法找到匹配项,则返回 NULL。

该函数别名为 get_json_object.

语法

VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)

参数说明

  • json_str: JSON 字符串,支持的数据类型为 VARCHAR。

  • json_path: 指定的解析路径,支持的数据类型为 VARCHAR。json_path一般使用$ 符号作为开头;使用 . 作为路径分割符;使用 [] 表示数组下标, 从 0 开始。

    举例:$."my.key"[1]表示的是获取my.key对应的数据中第 2 个值。

返回值说明

返回值的数据类型为 VARCHAR。如果无法找到对象,则返回 NULL。

示例

示例一:从单个字符串中,获取 "k1" 对应的value。

MySQL > SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");
+---------------------------------------------------+
| get_json_string('{"k1":"v1", "k2":"v2"}', '$.k1') |
+---------------------------------------------------+
| v1 |
+---------------------------------------------------+

示例二:从多个字符串的数组中,获取第一个字符串内a对应的值。

MySQL > SELECT get_json_object('[{"a":"123", "b": "456"},{"a":"23", "b": "56"}]', '$[0].a');
+------------------------------------------------------------------------------+
| get_json_object('[{"a":"123", "b": "456"},{"a":"23", "b": "56"}]', '$[0].a') |
+------------------------------------------------------------------------------+
| 123 |
+------------------------------------------------------------------------------+

示例三:获取 "my.key" 对应的数组中第二个元素。

MySQL > SELECT get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]');
+------------------------------------------------------------------------------+
| get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]') |
+------------------------------------------------------------------------------+
| e2 |
+------------------------------------------------------------------------------+

示例四:获取二级路径 k1.key -> k2 的数组中第一个元素。

MySQL > SELECT get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]');
+-----------------------------------------------------------------------+1
| get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]') |
+-----------------------------------------------------------------------+
| v1 |
+-----------------------------------------------------------------------+