日志服务 字典和列表函数

{“content”: “{\\”a\\”:{\\”b\\”:{\\”c\\”:\\”cc\\”}}}”}json_add(“content”, {“a”:{“b”:{“d”:”dd”}}})。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

三、函数定义

json 中新增节点。

四、语法描述

json_add(key,data)

五、参数说明

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

六、示例

原始日志:

加工规则:

加工结果:

{"content": "{\\"a\\":{\\"b\\":{\\"c\\":\\"cc\\",\\"d\\":\\"dd\\"}}}"}

八、函数定义

增加/修改/删除字典中的键值对,返回 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"}

十六、函数定义

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

十七、语法描述

json_select(data, jmes="")

十八、参数说明

参数名称 参数描述 参数类型 是否必须 参数默认值 参数取值范围
data 字段值,可以通过其他函数提取字段值 string 是 – –
jmes 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"}

21、函数定义

在 json 中新增 KV 对,将用户传入的 String 一对一对的去添加,不成对的单个 String 会被丢弃(见示例2)。

22、语法描述

json_update(json值, key1, value1,key2, value2)

23、参数说明

参数名称 参数描述 参数类型 是否必须 参数默认值 参数取值范围
field json 对应的 key string 是 – –
可变参 添加进 json 的 key value 对 string 是 – –

24、示例1:在 json 中新增 KV 对

原始日志:

{"data": "{\\"c\\":\\"d\\"}"}

加工规则:

json_update("data", "11", "22")

加工结果:

{"data":"{\\"11\\":\\"22\\",\\"c\\":\\"d\\"}"}

25、示例2:在 json 中新增 KV 对,不成对的(例子中的33)会被丢弃

原始日志:

{ "data": "{\\"c\\":\\"d\\"}", "name": "测试", "timestamp": 1734567890, "status": true}

加工规则:

json_update("data", "11", "11", "22", "22", "33")

加工结果:

{"data":"{"11":"11","22":"22","c":"d"}","name":"测试","status":"true","timestamp":"1734567890"}

27、函数定义

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

28、语法描述

xml_to_json(data)

29、参数说明

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

30、示例

原始日志:

{"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"}

32、函数定义

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

33、语法描述

json_to_xml(data)

34、参数说明

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

35、示例

原始日志:

{"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"}

37、函数定义

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

38、语法描述

if_json(data)

39、参数说明

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

40、示例

·示例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"}

43、函数定义

获取数组的值,返回 String。

44、语法描述

array_get(数组,下标位置)

45、参数说明

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

46、示例1

原始日志:

{ "field1": "[1,2,3]"}

加工规则:

fields_set("field2", array_get(v("field1"), 0))

加工结果:

{"field1":"[1,2,3]","field2":"1"}

47、示例2

原始日志:

{ "field1": "['tom','jerry','bobo']"}

加工规则:

fields_set("field2", array_get(v("field1"), 0))

加工结果:

{"field1":"['tom','jerry','bobo']","field2":"tom"}

赞 (0)
上一篇 4天前
下一篇 4天前