tencent cloud

文档反馈

JSON 函数

最后更新时间:2024-01-22 10:52:48
    本文介绍 JSON 函数的基本语法及示例。
    函数名称
    语句
    含义
    json_array_contains(x,value)
    判断 JSON 数组中是否包含某个值。
    json_array_get(x,index)
    获取 JSON 数组中某个下标对应的元素。
    json_array_length(x)
    计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。
    json_extract(x,json_path)
    从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。
    json_extract_scalar(x,json_path)
    从 JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值)。类似于 json_extract 函数。
    json_format(x)
    把 JSON 类型转化成字符串类型。
    json_parse(x)
    把字符串类型转化成 JSON 类型。
    json_size(x,json_path)
    计算 JSON 对象或数组中元素的数量。

    json_array_contains 函数

    json_array_contains 函数用于判断 JSON 数组中是否包含某个值。

    语法

    json_array_contains(x, value)

    参数说明

    参数
    说明
    x
    参数值为 JSON 数组。
    value
    数值。

    返回值类型

    boolean 类型。

    示例

    判断 JSON 字符[1,2,3]中是否包含2。
    查询和分析语句
    * | SELECT json_array_contains('[1, 2, 3]', 2)
    查询和分析结果
    TRUE

    json_array_get 函数

    json_array_get 函数用于获取 JSON 数组中某个下标对应的元素。

    语法

    json_array_get(x, index)

    参数说明

    参数
    说明
    x
    参数值为 JSON 数组。
    index
    JSON 下标,从0开始。

    返回值类型

    varchar类型。

    示例

    返回 JSON 数组["a", [3, 9], "c"]下标为1的元素。
    查询和分析语句
    * | SELECT json_array_get('["a", [3, 9], "c"]', 1)
    查询和分析结果
    [3,9]

    json_array_length 函数

    json_array_length 函数用于计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。

    语法

    json_array_length(x)

    参数说明

    参数
    说明
    x
    参数值为 JSON 数组。

    返回值类型

    bigint 类型。

    示例

    示例1:计算 apple.message 字段值中 JSON 元素的数量。
    apple.message:[{"traceName":"StoreMonitor"},{"topicName":"persistent://apache/pulsar/test-partition-17"},{"producerName":"pulsar-mini-338-36"},{"localAddr":"pulsar://pulsar-mini-broker-5.pulsar-mini-broker.pulsar.svc.cluster.local:6650"},{"sequenceId":826},{"storeTime":1635905306062},{"messageId":"19422-24519"},{"status":"SUCCESS"}]
    查询和分析语句
    * | SELECT json_array_length(apple.message)
    查询和分析结果
    8

    json_extract 函数

    json_extract 函数用于从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。

    语法

    json_extract(x, json_path)

    参数说明

    参数
    说明
    x
    参数值为 JSON 对象或 JSON 数组。
    json_path
    JSONPath 形式的 JSON 路径,例如 $.store.book[0].title。
    注意:不支持需要遍历数组元素的 JSON 语法,例如 $.store.book[*].author$..book[(@.length-1)]$..book[?(@.price<10)] 等。

    返回值类型

    JSON 格式的 string 类型。

    示例

    获取 apple.instant 字段中 epochSecond 的值。
    字段样例
    apple.instant:{"epochSecond":1635905306,"nanoOfSecond":63001000}
    查询和分析语句
    * | SELECT json_extract(apple.instant, '$.epochSecond')
    查询和分析结果
    1635905306

    json_extract_scalar 函数

    json_extract_scalar 函数用于从 JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值)。

    语法

    json_extract_scalar(x, json_path)

    参数说明

    参数
    说明
    x
    参数值为 JSON 数组。
    json_path
    JSONPath 形式的 JSON 路径,例如 $.store.book[0].title。
    注意:不支持需要遍历数组元素的 JSON 语法,例如 $.store.book[*].author$..book[(@.length-1)]$..book[?(@.price<10)] 等。

    返回值类型

    varchar 类型。

    示例

    apple.instant 字段中获取 epochSecond 字段的值,并将该值转换为 bigint 类型进行求和。
    字段样例
    apple.instant:{"epochSecond":1635905306,"nanoOfSecond":63001000}
    查询和分析语句
    * | SELECT sum(cast(json_extract_scalar(apple.instant,'$.epochSecond') AS bigint) )
    查询和分析结果
    1635905306

    json_format 函数

    json_format 函数用于将 JSON 类型转化成字符串类型。

    语法

    json_format(x)

    参数说明

    参数
    说明
    x
    参数值为 JSON 类型。

    返回值类型

    varchar 类型。

    示例

    将 JSON 数组[1,2,3]转换为字符串。
    查询和分析语句
    * | SELECT json_format(json_parse('[1, 2, 3]'))
    查询和分析结果
    [1, 2, 3]

    json_parse 函数

    json_parse 函数只用于将字符串类型转化成 JSON 类型,判断是否符合 JSON 格式。

    语法

    json_parse(x)

    参数说明

    参数
    说明
    x
    参数值为字符串。

    返回值类型

    JSON类型。

    示例

    将字符串[1, 2, 3]转换为JSON数组。
    查询和分析语句
    * | SELECT json_parse('[1, 2, 3]')
    查询和分析结果
    [1, 2, 3]

    json_size 函数

    json_size 函数用于计算 JSON 对象或 JSON 数组中元素的数量。

    语法

    json_size(x, json_path)

    参数说明

    参数
    说明
    x
    参数值为 JSON 对象或 JSON 数组。
    json_path
    JSON 路径,格式为 $.store.book[0].title。

    返回值类型

    bigint 类型。

    示例

    获取JSON 数组[1,2,3]的长度。
    查询和分析语句
    * | SELECT json_size(json_parse('[1, 2, 3]'),'$')
    查询和分析结果
    3
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持