跳到主要内容

JSON_KEYS

描述

以数组形式返回 JSON 对象的所有键(key)。 默认情况返回 root 对象的键,也可以通过参数控制返回具体某个路径对应的对象的键。

语法

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

参数

必选参数

  • <json_object> JSON 类型,需要提取键的 JSON 对象。

可选参数

  • <path> String 类型,可选的 JSON 路径,指定检查的 JSON 子文档。如果不提供,默认为根文档。

返回值

  • Array<String> 返回一个字符串的数组,数组成员就是 JSON 对象的所有键。

注意事项

  • <json_object> 或者 <path> 为 NULL 时返回 NULL。
  • 如果不是 JSON 对象(比如是 JSON 数组),返回 NULL。
  • 如果 <path> 指向的对象不存在,返回 NULL。

示例

  1. 示例 1

    SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}');
    +---------------------------------------+
    | JSON_KEYS('{"a": 1, "b": {"c": 30}}') |
    +---------------------------------------+
    | ["a", "b"] |
    +---------------------------------------+
    SELECT JSON_KEYS('{}');
    +-----------------+
    | JSON_KEYS('{}') |
    +-----------------+
    | [] |
    +-----------------+
  2. 指定 path

    SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b');
    +----------------------------------------------+
    | JSON_KEYS('{"a": 1, "b": {"c": 30}}', '$.b') |
    +----------------------------------------------+
    | ["c"] |
    +----------------------------------------------+
  3. NULL 参数

    SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}', NULL);
    +---------------------------------------------+
    | JSON_KEYS('{"a": 1, "b": {"c": 30}}', NULL) |
    +---------------------------------------------+
    | NULL |
    +---------------------------------------------+
    SELECT JSON_KEYS(NULL);
    +-----------------+
    | JSON_KEYS(NULL) |
    +-----------------+
    | NULL |
    +-----------------+
  4. 不是 JSON 对象

    SELECT JSON_KEYS('[1,2]');
    +--------------------+
    | JSON_KEYS('[1,2]') |
    +--------------------+
    | NULL |
    +--------------------+
    SELECT JSON_KEYS('{"k": [1, 2, 3]}', '$.k');
    +--------------------------------------+
    | JSON_KEYS('{"k": [1, 2, 3]}', '$.k') |
    +--------------------------------------+
    | NULL |
    +--------------------------------------+
  5. path 指定的对象不存在

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