跳到主要内容

JSON_KEYS

描述

用于从 JSON 对象的顶级值中返回键。这些键作为数组返回,或者如果给定了路径参数,则返回所选路径的顶级键。您需要将 JSON 文档作为函数的参数提供。您还可以(可选地)提供第二个参数,以指定 JSON 文档中“顶级”路径从何处开始。 其中,json_doc 是 JSON 文档,path 是一个可选参数,用于确定 JSON 文档中“顶级”路径从何处开始。

语法

JSON_KEYS(<str> [, <path>])

别名

  • JSONB_KEYS

必选参数

参数描述
<str>需要提取键的 JSON 字符串。

可选参数

参数描述
<path>可选的 JSON 路径,指定检查的 JSON 子文档。如果不提供,默认为根文档。

返回值

  • 返回 JSON 文档的键名列表(一个 JSON 数组)。
  • 如果 str 不是一个有效的 JSON 对象,返回 NULL。
  • 如果 JSON 对象没有键,返回一个空数组。

注意事项

  • 如果所选对象为空,则结果数组为空。如果顶级值包含嵌套的子对象,返回值不包括这些子对象的键。

示例


SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}');


+-----------------------------------------------------+
| json_keys(cast('{"a": 1, "b": {"c": 30}}' as JSON)) |
+-----------------------------------------------------+
| ["a", "b"] |
+-----------------------------------------------------+


SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b');

+------------------------------------------------------------+
| json_keys(cast('{"a": 1, "b": {"c": 30}}' as JSON), '$.b') |
+------------------------------------------------------------+
| ["c"] |
+------------------------------------------------------------+

SELECT JSON_KEYS('{}');


+-------------------------------+
| json_keys(cast('{}' as JSON)) |
+-------------------------------+
| [] |
+-------------------------------+


SELECT JSON_KEYS('[1,2]');


+----------------------------------+
| json_keys(cast('[1,2]' as JSON)) |
+----------------------------------+
| NULL |
+----------------------------------+


SELECT JSON_KEYS('[]');


+-------------------------------+
| json_keys(cast('[]' as JSON)) |
+-------------------------------+
| NULL |
+-------------------------------+