Skip to content

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 序列化时注意类型匹配。