表达式转换器
exprTransform组件:表达式转换器。使用 expr (opens new window) 表达式引擎对消息进行灵活转换和处理。支持数学运算、字符串处理、条件判断等丰富的表达式功能。
# 配置
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| expr | string | 单个转换表达式,执行结果将替换msg内容 | 无 |
| mapping | map | 多字段转换表达式映射表,格式为 {字段名: 转换表达式} | 无 |
配置说明:
- 当同时配置expr和mapping时,优先使用expr字段的表达式
- expr用于单一转换场景,结果直接替换msg
- mapping用于多字段转换场景,多个转换结果会合并成JSON字符串
支持的变量:
${id}- 消息ID${ts}- 消息时间戳${data}- 原始消息内容${msg}- 消息体对象(JSON类型时可用${msg.field}访问字段)${metadata}- 消息元数据对象${msgType}- 消息类型${dataType}- 数据类型
表达式示例:
${msg.temperature} > 30- 温度大于30度的条件判断upper(${msg.name})- 转换名称为大写len(${msg.items})- 获取数组长度${msg.price} * 1.2- 价格加价20%${metadata.deviceType} == "sensor"- 判断设备类型${msg.value} > 100 ? "High" : "Normal"- 三元运算判断状态format("%s-%d", ${msg.name}, ${msg.id})- 格式化字符串in(${msg.status}, ["active", "pending"])- 检查状态是否在列表中
更多变量使用方法参考:组件配置变量
# 配置示例
{
"id": "s2",
"type": "exprTransform",
"name": "表达式转换",
"configuration": {
"mapping": {
"name": "upper(${msg.name})",
"tmp": "${msg.temperature}",
"alarm": "${msg.temperature}>50",
"productType": "${metadata.productType}"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/09/03, 10:09:04