JSON 表达式
概念说明
JSON表达式允许在JSON配置中嵌入变量占位符。平台在运行时会将 ={{变量名}} 替换为上下文中该变量的实际值,支持字符串、数字、布尔、对象、数组等所有类型。
快速上手
在 JSON字段值中使用 ={{变量名}} 即可:
json
{
"title": "={{msg.title}}",
"level": "={{msg.level}}",
"sender": "={{msg.sender}}"
}运行时自动替换为:
json
{
"title": "系统告警",
"level": 3,
"sender": { "id": "u_001", "name": "运维平台" }
}语法规则
={{变量名}}| 规则 | 说明 |
|---|---|
前缀 = | 必须以等号开头,标识这是一个动态表达式 |
{{变量名}} | 双花括号包裹变量名,变量来自当前运行上下文 |
| 嵌套访问 | 支持 . 访问嵌套属性,如 ={{msg.sender.name}} |
| 整字段替换 | 当字段值完全为 ={{变量}} 时,替换后类型与变量一致 |
| 混合文本 | 当字段值包含静态文本时,如 "=你好 {{name}}",结果始终为字符串 |
替换场景详解
字符串替换
json
{ "title": "={{msg.title}}" }
// → { "title": "系统告警" }也支持在静态文本中嵌入变量:
json
{ "subject": "=[{{msg.type}}] {{msg.title}}" }
// → { "subject": "[ERROR] 系统告警" }数字 / 布尔替换
当整个字段值为 ={{变量}},替换后保留原始类型:
json
{
"level": "={{msg.level}}",
"isRead": "={{msg.isRead}}"
}
// →
{
"level": 3,
"isRead": false
}嵌套对象替换
json
{ "sender": "={{msg.sender}}" }
// →
{
"sender": {
"id": "u_001",
"name": "运维平台",
"type": "system"
}
}列表 / 数组替换
json
{ "tags": "={{msg.tags}}" }
// → { "tags": ["告警", "高优先级", "未处理"] }综合示例
json
{
"subject": "=[{{msg.type}}] {{msg.title}}",
"priority": "={{msg.level}}",
"isUrgent": "={{msg.isUrgent}}",
"sender": "={{msg.sender}}",
"tags": "={{msg.tags}}",
"extra": {
"source": "platform",
"operator": "={{msg.sender.name}}"
}
}注意事项
配置人员注意
- 变量名拼写错误时,该字段会被替换为空字符串
"",配置不会报错,请仔细核对变量名。 - 嵌套属性(如
={{msg.sender.name}})若中间层为空,同样返回空字符串,不会中断运行。
开发者注意
={{}}仅做变量替换,不支持表达式运算(如={{a + b}}),运算逻辑请使用布尔表达式或 JS 函数节点。- 混合静态文本时(如
"=前缀_{{name}}"),无论变量原始类型是什么,结果均为字符串。 - 整字段替换(
"field": "={{obj}}")时,类型与上下文变量保持一致,JSON 序列化时注意类型匹配。
