跳到主要内容
版本:Latest-3.4

json_keys

返回 JSON 对象的顶级键作为 JSON 数组,或者如果指定了 path,则返回路径中的顶级键。

提示

所有的 JSON 函数和操作符都列在导航栏和概览页面

通过生成列加速查询

语法

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"] |
+-----------------------------------------------+