字典和列表函数

最近更新时间:2025-06-24 15:47:32

我的收藏

字典函数

json_add 函数

函数定义

json 中新增节点。

语法描述

json_add(key,data)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
key
json 对应的 key
string
-
-
data
补充新的节点
dict
-
-

示例

原始日志:
{"content": "{\\"a\\":{\\"b\\":{\\"c\\":\\"cc\\"}}}"}
加工规则:
json_add("content", {"a":{"b":{"d":"dd"}}})
加工结果:
{"content": "{\\"a\\":{\\"b\\":{\\"c\\":\\"cc\\",\\"d\\":\\"dd\\"}}}"}

json_edit 函数

函数定义

增加/修改/删除字典中的键值对,返回 dict。

语法描述

json_edit("result", path="", key="",value="333",index=1,mode="edit")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
field
嵌套 json 对应的 key
string
-
-
path
需要删除或修改目标字段对应的目录,删除或修改的字段为嵌套 json 的第一层级时,不填;对数组元素操作时填写至数组对应的 key,支持 JMES 语法
string
-
-
key
需要删除或修改的目标字段,当对数组元素操作时,无需填写
string
-
-
value
需要设定的新值,修改值时才需要填写
string
-
-
index
对数组操作时填写该字段,数组元素从1开始
number
0
-
mode
模式。修改:edit,删除:move,默认 move
string
move
-

示例1:修改指定节点的值

原始日志:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\"}","time":"1650440364"}

加工规则:
json_edit("content", path="", key="p18", value="hello", mode="edit")
加工结果:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"hello\\"}", "time":"1650440364"}

示例2:修改指定节点的值(多层级)

原始日志:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\",\\"info\\":{\\"province\\":\\"hubei\\",\\"geo\\":{\\"long\\":\\"111\\",\\"lati\\":\\"222\\"}}}","time":"1650440364"}
加工规则:
json_edit("content", path="info.geo", key="long", value="333", mode="edit")
加工结果:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\",\\"info\\":{\\"province\\":\\"hubei\\",\\"geo\\":{\\"long\\":\\"333\\",\\"lati\\":\\"222\\"}}}","time":"1650440364"}

示例3:删除节点

原始日志:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\",\\"info\\":{\\"province\\":\\"hubei\\",\\"geo\\":{\\"long\\":\\"111\\",\\"lati\\":\\"222\\"}}}","time":"1650440364"}
加工规则:
json_edit("content", path="", key="p18", mode="move")
加工结果:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"info\\":{\\"province\\":\\"hubei\\",\\"geo\\":{\\"long\\":\\"111\\",\\"lati\\":\\"222\\"}}}","time":"1650440364"}

示例4:删除节点(数组元素)

原始日志:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\",\\"info\\":{\\"province\\":[\\"hello\\",\\"world\\"],\\"geo\\":{\\"long\\":[\\"1.0\\",\\"2.0\\"],\\"lati\\":\\"222\\"}}}","time":"1650440364"}
加工规则:
json_edit("content", path="info.province", index=1, mode="move")
加工结果:
{"content":"{\\"p9\\":[\\"0.0\\",\\"0.0\\"],\\"p18\\":\\"CN\\",\\"info\\":{\\"province\\":[\\"world\\"],\\"geo\\":{\\"long\\":[\\"1.0\\",\\"2.0\\"],\\"lati\\":\\"222\\"}}}","time":"1650440364"}

json_select 函数

函数定义

通过 JMES表达式,提取 JSON 字段值,并返回 Jmes 提取的节点值(String)。

语法描述

json_select(data, jmes="")

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值,可以通过其他函数提取字段值
string
-
-
jmes
string
-
-

示例

原始日志:
{"field": "{\\"a\\":{\\"b\\":{\\"c\\":{\\"d\\":\\"success\\"}}}}", "status": "500"}
加工规则:
fields_set("message", json_select(v("field"), jmes="a.b.c.d"))
加工结果:
{"field":"{\\"a\\":{\\"b\\":{\\"c\\":{\\"d\\":\\"success\\"}}}}","message":"success","status":"500"}

xml_to_json 函数

函数定义

解析 XML 值并转换为 JSON 字符串,输入值必须为 XML 字符串结构,否则会导致转换异常,返回 dict。

语法描述

xml_to_json(data)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-

示例

原始日志:
{"xml_field": "<note><to>B</to><from>A</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>", "status": "500"}
加工规则:
fields_set("json_field", xml_to_json(v("xml_field")))
加工结果:
{"xml_field":"<note><to>B</to><from>A</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>","json_field":"{\\"to\\":\\"B\\",\\"from\\":\\"A\\",\\"heading\\":\\"Reminder\\",\\"body\\":\\"Don't forget me this weekend!\\"}","status":"500"}

json_to_xml 函数

函数定义

解析 JSON 字符串值并转换为 XML 字符串,返回 String。

语法描述

json_to_xml(data)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-

示例

原始日志:
{"json_field":"{\\"to\\":\\"B\\",\\"from\\":\\"A\\",\\"heading\\":\\"Reminder\\",\\"body\\":\\"Don't forget me this weekend!\\"}", "status": "200"}
加工规则:
fields_set("xml_field", json_to_xml(v("json_field")))
加工结果:
{"json_field":"{\\"to\\":\\"B\\",\\"from\\":\\"A\\",\\"heading\\":\\"Reminder\\",\\"body\\":\\"Don't forget me this weekend!\\"}","xml_field":"<ObjectNode><to>B</to><from>A</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></ObjectNode>","status":"200"}

if_json 函数

函数定义

判断是否为 JSON 字符串,返回 TRUE/FALSE。

语法描述

if_json(data)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
data
字段值
string
-
-

示例

示例1
原始日志:
{"condition":"{\\"a\\":\\"b\\"}","status":"500"}
加工语句:
t_if(if_json(v("condition")), fields_set("new", 1))
加工结果:
{"new":"1","condition":"{\\"a\\":\\"b\\"}","status":"500"}
示例2
原始日志:
{"condition":"haha","status":"500"}
加工语句:
t_if(if_json(v("condition")), fields_set("new", 1))
加工结果:
{"condition":"haha","status":"500"}

列表函数

array_get 函数

函数定义

获取数组的值,返回 String。

语法描述

array_get(数组,下标位置)

参数说明

参数名称
参数描述
参数类型
是否必须
参数默认值
参数取值范围
数组
数组
string
-
-
下标位置
取数组第几个值
int
-
-

示例1

原始日志:
{
"field1": "[1,2,3]"
}
加工规则:
fields_set("field2", array_get(v("field1"), 0))
加工结果:
{"field1":"[1,2,3]","field2":"1"}

示例2

原始日志:
{
"field1": "['tom','jerry','bobo']"
}
加工规则:
fields_set("field2", array_get(v("field1"), 0))
加工结果:
{"field1":"['tom','jerry','bobo']","field2":"tom"}