从入站消息data或其metadata中删除指定的键值对。
前置条件
若从消息 data 删除,其必须为有效JSON对象。若消息data不是JSON对象,节点将原样透传消息。
配置
字段说明
- 从以下位置删除键值对 — 指定删除操作发生的位置。可为:
- Message — 从消息 data 删除键值对。
- Metadata — 从 metadata 删除键值对。
- Keys — 要从源中删除的键集合。支持Java正则表达式。 若配置的键模式在源中无匹配,则忽略。
JSON Schema
消息处理逻辑
- 节点检查配置的删除源(Message 或 Metadata)。
- 遍历源中所有键。
- 对每个键,检查其是否匹配 Keys 配置中列出的任一模式。
- 所有匹配的键值对从源中移除。
- 若至少删除一个键值对,创建包含更新后data或metadata的新消息,经
Success传递至下一节点。 - 若无键匹配或源为空,原始消息经
Success原样透传。 - 若发生意外错误,消息经
Failure路由。
输出连接
Success:- 处理正常完成(即使未删除任何键)时。
Failure:- 处理过程中发生意外错误时。
示例
示例1 — 从data删除
入站消息
Data:
1
2
3
4
5
6
{
"temperature": 25.4,
"humidity": 62,
"internal_id": "xyz-123",
"deviceName": "Sensor-A1"
}
节点配置
1
2
3
4
5
6
7
{
"deleteFrom": "DATA",
"keys": [
"internal_id",
"deviceName"
]
}
出站消息
Data:
1
2
3
4
{
"temperature": 25.4,
"humidity": 62
}
输出连接: Success。
说明: internal_id 和 deviceName 的键值对从消息data中删除。
示例2 — 从metadata删除
入站消息
Metadata:
1
2
3
4
5
6
{
"deviceType": "Thermostat",
"location": "Floor 1",
"rssi": "-56",
"snr": "12.1"
}
节点配置
1
2
3
4
5
6
7
{
"deleteFrom": "METADATA",
"keys": [
"rssi",
"snr"
]
}
出站消息
Metadata:
1
2
3
4
{
"deviceType": "Thermostat",
"location": "Floor 1"
}
输出连接: Success。
说明: rssi 和 snr 的键值对从metadata中删除。
示例3 — 使用Java正则表达式
入站消息
Data:
1
2
3
4
5
6
{
"temp_main": 33.1,
"humidity": 45,
"pressure": 1012,
"temp_ambient": 21.5
}
节点配置
1
2
3
4
5
6
{
"deleteFrom": "DATA",
"keys": [
"temp_.*"
]
}
出站消息
Data:
1
2
3
4
{
"humidity": 45,
"pressure": 1012
}
输出连接: Success。
说明: 正则表达式 temp_.* 匹配 temp_main 和 temp_ambient。这些键值对从消息data中删除。
示例4 — 无匹配键
入站消息
Data:
1
2
3
4
{
"temperature": 22.5,
"humidity": 55
}
节点配置
1
2
3
4
5
6
{
"deleteFrom": "DATA",
"keys": [
"pressure"
]
}
出站消息
Data:
1
2
3
4
{
"temperature": 22.5,
"humidity": 55
}
输出连接: Success。
说明: 消息data中不存在 pressure 键,故无任何删除。原始消息原样透传。