跳到主要内容
版本: 最新版本-3.5

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