json_keys
返回 JSON 对象的顶级键作为 JSON 数组,或者如果指定了 path
,则返回路径中的顶级键。
语法
json_keys(json_doc[, path])
参数
json_doc
:必需。用于返回键的 JSON 文档。它必须是一个 JSON 对象。
path
:可选。路径通常以 $
开头,并使用 .
作为路径分隔符。[]
用作数组下标,从 0 开始。
返回值
返回一个 JSON 数组。
如果 JSON 对象为空,则返回一个空数组。
如果 JSON 文档不是 JSON 对象或路径未标识文档中的值,则返回 NULL
。
如果 JSON 文档是一个嵌套了 JSON 对象的数组,可以使用 path
参数从该对象中获取键。
示例
示例 1:返回一个空数组,因为输入的 JSON 对象为空。
select json_keys('{}');
+-----------------+
| json_keys('{}') |
+-----------------+
| [] |
+-----------------+
示例 2:返回 JSON 对象的键。
select json_keys('{"a": 1, "b": 2, "c": 3}');
+----------------+
| json_keys('1') |
+----------------+
|["a", "b", "c"] |
+----------------+
示例 3:返回与指定路径匹配的 JSON 对象的键。
select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') |
+---------------------------------------------------------------------+
| ["d", "e", "f"] |
+---------------------------------------------------------------------+
示例 4:路径不存在。
select json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e');
+---------------------------------------------------------------------+
| json_keys('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.e') |
+---------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------+
示例 5:JSON 文档不是 JSON 对象。
select json_keys('[1, 2, {"a": 1, "b": 2}]');
+---------------------------------------+
| json_keys('[1, 2, {"a": 1, "b": 2}]') |
+---------------------------------------+
| NULL |
+---------------------------------------+
示例 6:JSON 文档是一个嵌套了 JSON 对象的数组。指定路径以从该对象中获取键。
select json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]');
+-----------------------------------------------+
| json_keys('[0, 1, {"a": 1, "b": 2}]', '$[2]') |
+-----------------------------------------------+
| ["a", "b"] |
+-----------------------------------------------+