- 文档首页
日志服务
用户指南
检索分析
SQL 函数
JSON 函数
JSON 函数
本文介绍日志服务支持的 JSON 函数语法及常见场景的使用示例。
说明
- 在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time 或 "time" 代表字段名或列名。
- 当解析字符串为 JSON 类型失败时,将返回 NULL。
- 如果采集时JSON 日志被截断,那么在使用 JSON 函数进行分析时,系统将报错且中止分析。针对该错误,您可以使用 TRY 表达式捕获异常信息,使得系统继续执行分析操作。例如* | SELECT message, TRY(JSON_PARSE(message))。
JSON_ARRAY_CONTAINS 函数用于判断 JSON 数组中是否存在特定的元素。
JSON_ARRAY_CONTAINS(KEY, value)
- 判断 JSON 数组[5, 10, 3]中是否包含 1。
* | SELECT JSON_ARRAY_CONTAINS('[5, 10, 3]', '1')
-
JSON_ARRAY_GET 函数将根据指定的 JSON 下标提取对应的 JSON 元素。
JSON_ARRAY_GET(KEY, index)
- 返回 JSON 数组["mon", [0, 8], "ten"]中下标为 2 的元素。
* | SELECT JSON_ARRAY_GET('["mon", [0, 8], "ten"]', 2)
-
JSON_ARRAY_LENGTH 函数用于计算 JSON 数组长度,即 JSON 元素数量。
- 计算json_test02字段值中 JSON 元素的数量。
-
* | SELECT JSON_ARRAY_LENGTH(json_test02)
-
JSON_EXTRACT 函数用于从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。
说明
如果分析非法的 JSON 类型,JSON_EXTRACT 函数将报错,建议您使用 JSON_EXTRACT_SCALAR 函数。
JSON_EXTRACT(KEY, json_path)
- 获取 JSON 类型字符串 '[{"SIZE":100},{"STATUS":200}]' 中 SIZE 字段的值。
* | SELECT JSON_EXTRACT('[{"SIZE":100},{"STATUS":200}]', '$.0.SIZE')
-
JSON_EXTRACT_SCALAR 函数用于从 JSON 形式的字符串中提取一组标量值(字符串、整数或布尔值)。
JSON_EXTRACT_SCALAR(json_string, json_path)
- 从 JSON 形式的字符串 [{"SIZE":100},{"STATUS":200}] 中获取 STATUS 字段的值。
*|SELECT JSON_EXTRACT_SCALAR('[{"SIZE":100},{"STATUS":200}]','$.1.STATUS')
-
JSON_FORMAT 函数用于将 JSON 类型转化成字符串类型。
- 将 JSON 数组 [100,200,300] 转换为字符串 [100, 200, 300]。
* | SELECT JSON_FORMAT(JSON_PARSE('[100, 200, 300]'))
-
JSON_PARSE 函数只用于将 JSON 格式的字符串转化成 JSON 类型。一般情况下,JSON_PARSE 函数使用意义不大,如果您需要从 JSON 中提取值,建议使用JSON_EXTRACT_SCALAR函数。
- 提取 JSON 形式的字符串 {"SIZE":100,"STATUS":200} 中的各个子字段。
*| SELECT MAP_KEYS(TRY_CAST(JSON_PARSE('{"SIZE":100,"STATUS":200}') AS MAP(varchar, json)))
-
JSON_SIZE 函数用于计算 JSON 对象或 JSON 数组中元素的数量。
JSON_SIZE(KEY, json_path)
- 返回 JSON 形式的字符串 [{"SIZE":100,"STATUS":200,"LEN":1}] 中特定路径元素的数量。
* | SELECT JSON_SIZE('[{"SIZE":100,"STATUS":200,"LEN":1}]', '$.0.LEN')
-
最近更新时间:2026.08.28 16:45:49