14.4. 带有 JSONata 的 JSON 事件转换


JSONata 是 JSON 数据的轻量级查询和转换语言。在 Knative EventTransform 中,JSONata 表达式提供了一种重要的方法来重塑事件。您可以使用它们从事件数据中提取值,将特定字段提升到 CloudEvent 属性,重新构建整个有效负载,添加计算值,甚至应用条件逻辑来控制事件的转换方式。

您可以在 EventTransform 资源的 spec.jsonata.expression 字段中指定 JSONata 表达式。表达式将传入的 CloudEvent 映射到新的 CloudEvent 中,如下例所示:

使用 JSONata 的简单事件转换示例

apiVersion: eventing.knative.dev/v1alpha1
kind: EventTransform
metadata:
  name: simple-transform
spec:
  jsonata:
    expression: |
      {
        "specversion": "1.0",
        "id": id,
        "time": time,
        "type": "transformed.type",
        "source": "transform.simple",
        "data": data
      }
Copy to Clipboard Toggle word wrap

14.4.1. JSONata 中的 CloudEvent 结构

当您在 EventTransform 中使用 JSONata 时,对表达式的输入是完整的 CloudEvent 对象,其中包括所有标准属性和事件有效负载。

JSONata 表达式的输出必须生成有效的 CloudEvent。至少,需要以下字段才能确保符合 CloudEvents 规格:

Expand
字段要求描述

specversion

必须是 1.0

标识 CloudEvents 规格版本。

id

唯一字符串

用作事件的唯一标识符。

type

必需

表示事件类型,如 com.example.object.created

source

必需

标识发生事件的上下文。

data

必需

包含正在交付的事件有效负载。

通过在 JSONata 表达式中显式构建这些字段,您可以确保转换的事件在根据需要仍然应用重塑、增强或条件逻辑的同时有效。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat