14.5. 常见转换模式
为了有效地形成您的事件数据,您可以使用常见的 JSONata 转换模式来保留、提取、重组或有条件地修改事件。
14.5.1. 保留原始事件结构 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以添加或调整属性,同时保持事件的其余部分保持不变,以便下游用户以最小的修改接收原始数据。
在保留原始事件结构的同时添加静态属性的示例
14.5.2. 将字段提取为属性 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以将值从有效负载提升到顶层 CloudEvent 属性,以便更轻松地过滤和路由。
从有效负载提取用户 ID 和区域的示例,并将其公开为属性
在 JSONata 中,$ 符号代表整个输入对象。使用 data: $ 在提升所选字段时保留原始事件有效负载。
14.5.3. 重组事件数据 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
通过重组有效负载、重命名字段、嵌套对象和执行计算,使用 JSONata 将事件转换为另一个系统所需的模式。
重组订购事件并计算项目总数的示例
根据以上转换过程,这个 JSON 对象作为输入:
转换会生成以下输出:
使用此模式与需要特定结构或计算的字段的 API 集成。
14.5.4. 条件转换 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 JSONata,您可以将条件逻辑直接嵌入到您的转换中,根据属性或有效负载值启用动态事件 shaping。
根据条件应用不同类型和优先级的示例
在给定示例中:
-
如果事件类型是
order. created,则新类型将变为new.order;否则,它被设置为 update.order。 -
如果有效负载中的 total 字段大于 1000,则会添加一个
优先级属性,值为high;否则,它被设置为normal。