值结构化处理函数

最近更新时间:2024-07-11 16:43:42

我的收藏

简介

值结构化处理函数,包括 JSON 指定节点的值选取、XML 和 JSON 互转、判断值是否是 JSON。

json_select 函数

函数定义

通过 Jmes 表达式,提取 JSON 字段值,并返回 Jmes 提取结果的 JSON 字符串。

语法描述

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 字符串结构,否则会导致转换异常。

语法描述

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 字符串。

语法描述

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 字符串。

语法描述

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 函数

函数定义

获取数组的值。

语法描述

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