在 mule esb 中从 JSON 中提取数组

2023-12-11

我正在使用 Mule 3.4 CE,并且我有一个通过 HTTP 传输的 JSON 数据,格式如下:

{
   "People" : [
    {
       "Details" : 
       {
         "Name" : "John Smith",
         "Email" : "[email protected]"
       }
    },
    {
       "Details" : 
       {
         "Name" : "Tim Smith",
         "Email" : "[email protected]"
       }
    },
    {
       "Details" : 
       {
         "Name" : "Ken Smith",
         "Email" : "[email protected]"
       }
    },
}

我需要提取电子邮件并通过这些电子邮件查找 Salesforce 联系人,同时我想保留 JSON 有效负载。所以我的问题是如何通过 MEL 提取电子邮件? (例如“People/Details/*/Email”之类的内容 - 我知道这不是有效的,但我正在寻找正确的语法。

Edit:我想一次性提取电子邮件而不是索引(例如 People/Details[0].Email,可能使用 MEL。


查询 json 的最佳方法是将其转换为 Map。

<json:json-to-object-transformer returnClass="java.util.HashMap" />

然后使用像标准 MVEL 或 Java 语法一样的 MEL 进行查询

<logger message="#[payload.People[0].Details.email]" level="INFO" />

如果您想保持原始 json 有效负载完整,可以使用丰富器将映射存储在变量中:

<enricher target="#[flowVars.myJsonMap]">
   <json:json-to-object-transformer returnClass="java.util.HashMap" />
</enricher>

并查询变量而不是有效负载:

<logger message="#[flowVars.myJsonMap.People[0].Details.email]" level="INFO" />

您还可以映射json使用 Jackson 到自定义类并将 returnClass 属性更改为您的类。

此 MEL 备忘单详细介绍了 MEL 的 JSON 处理以及如何处理映射、数组等:http://www.mulesoft.org/documentation/display/current/MEL+Cheat+Sheet

Note:您可能会遇到 #[json:] 评估器,但它已被弃用,取而代之的是上述方法。

UPDATE:

如果您想一次获取所有电子邮件,您可以使用 MVEL 投影:

<enricher target="#[flowVars.myJsonMap]" source="#[(Details.email in payload.People)]">
       <json:json-to-object-transformer returnClass="java.util.HashMap" />

    </enricher>

Mvel 预测:http://mvel.codehaus.org/MVEL+2.0+Projections+and+Folds

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 mule esb 中从 JSON 中提取数组 的相关文章

  • 使用 Mule 发送格式化邮件

    我正在使用 Mule 发送电子邮件 我需要为发送的文本添加格式 邮件的内容是有效负载 其中包含我在 Java 方法中形成的字符串 并使用表达式转换器发送到流程 我需要向该字符串添加格式 粗体 下划线 颜色 我该怎么做 这是我的流程的摘录
  • 如何在 Mule 4 中将 SQL Server SELECT 转换为 XML?

    如何使用 Mule 4 中的 Dataweave 将以下 SQL 输出转换为 XML SELECT s RefId s LocalId s StateProvinceId s SchoolName e Email e EmailType F
  • 尝试从 Mule 4 中的 XML 中删除命名空间时出错

    当我用 替换所有有效负载 env 和 xmlns 时 我看到类似 当文档没有根时尝试写入 END DOCUMENT 的错误 它抛出错误 Message Trying to write END DOCUMENT when document h
  • 重连策略适用于哪些 mule 传输

    The 重连策略文档仅使用 JMS 示例 但是FTP 传输文档确实说明了重新连接策略的使用 但没有任何细节或示例 进一步如果你看这个answer David 提到重新连接仅适用于某些传输 连接传输 所以我的第一个问题 我们是否可以有一些正式
  • 如何在Mule中读取巨大的CSV文件

    我正在使用 Mule Studio 3 4 0 社区版 我有一个关于如何解析通过文件端点传入的大型 CSV 文件的大问题 场景是我有 3 个 CSV 文件 我会将文件的内容放入数据库中 但是当我尝试加载一个大文件 大约 144MB 时 我收
  • docker 中没有暴露和发布端口的连接

    我有一些中间件在 Docker 容器中运行 当我运行这个中间件时在我的主机上一切正常 当我在docker装有所有必要物品的容器暴露和发布的端口 Dockerfile EXPOSE 5672 15672 1337 1338 5556 3000
  • 在 Mule Flows 中使用 SOAP 配置 HTTP 端点

    我正在尝试使用 Mule Flows 在 Mule 中配置现有的 SOAP Web 服务 我有一个带有请求 响应的 HTTP 端点和一个 SOAP 组件 例如服务 A I want to configure this setup for a
  • 如何将 Spring 应用程序与 Mule ESB 集成

    我想将我的 spring 3 0 应用程序与 Mule ESB Mule3 集成 并为不同的客户端 Net GWT 等 提供这些服务 为了实现这一点 我是否应该将 Spring 应用程序部署为单独的组件并在 Mule 上定义 Endpoin
  • csv 到 xml:不确定在 Mule ESB 中执行此操作的最佳方法

    我是 Mule 的新手 所以请耐心等待 我收到以下 CSV 文件 Company1 2 123 Street Winchester UK 000010 CHRISTINE I HAAS A00 3978 1995 01 01 PRES 18
  • Mule CXF 马歇尔响应

    我在 Mule 3 中使用 cxf jaxws client 并且从 Web 服务调用中获得的响应属于 ReleasingInputStream 类型 我尝试添加 http response to message transformer 但
  • 如何向 Mule 有效负载添加附加数据?

    我正在尝试将一些额外的静态数据添加到入站 http 消息 作为 URL 参数接收 有效负载 然后将其提交到基于出站 http 表单的端点 我的骡子配置如下
  • 如何使用 Mule 请求程序进行 SFTP - 动态文件名和路径

    我正在尝试使用 Mule 请求程序组件进行 SFTP 如何将文件名作为请求参数的一部分给出 这是我的流程
  • 如何捕获 Mule foreach 作用域中的异常但保持进程继续进行?

    我是 Mule ESB 的新手 我创建了一个简单的流程 循环遍历订单列表并调用 Magento API 来逐一更新订单状态 我的问题是 如果 foreach 范围内发生任何异常 整个过程就会结束 我尝试使用异常策略来捕获异常 它确实捕获了异
  • 如何在Mule中通过HTTP请求发送文件并通过FTP上传到文件服务器

    我想在 HTTP POST 请求中发送一个文件 然后让 Mule 使用 FTP 将文件上传到服务器上的文件目录 看起来 FTP 连接器将有效负载保存到文件目录 但这实际上是空的 并且 FTP 将一个空文件写入该目录 我已经使用 Postma
  • ESB MULE 将参数传递给 java 方法

    我使用MULE版本3 3 0 CE 我想从入站标头获取一些值 然后将其传递给java方法 在java方法中对传递的值进行一些更改 最后我再次将其从java方法传递到出站 而不是将 Java bean 绑定到 Mule API 使用Calla
  • Mule Salesforce Batch 中的错误处理

    我正在尝试将一组帐户从 CSV 文件加载到 Salesforce 中 我已经配置了常用的 Datamapper 带有批提交的 Upsert SFDC 步骤和仅处理失败的批步骤 目前为日志 我的 OnComplete 有一个简单的记录器 我故
  • Hub、Spoke 和 ESB 之间的区别

    我知道对此已经有一个很好的问题 但它并没有真正回答我正在寻找的问题 据我了解 1 两者都用作应用程序之间的中心焦点2 两者都可以在服务 应用程序之间使用路由 中介 转换等 但我真正能看到的唯一区别是 中心辐射型通常有许多不同的格式进入中心
  • NoClassDefFoundError: javax/validation/Validation 即使在 POM 中的validation-api 1.1.0.Final 也会发生

    看起来很奇怪 我有异常跟踪 org apache cxf interceptor Fault at org mule module cxf MuleInvoker invoke MuleInvoker java 117 at org mul
  • 如何在 Mulesoft 中将睡眠设置为流程而不丢失消息负载

    我想插入脚本来延迟 Mulesoft 中的处理流程 我尝试在 groovy 中插入脚本 但丢失了消息有效负载 因此当我必须获取消息有效负载时 收到了空指针 我怎样才能不丢失消息有效负载 Thanks 如果您正在使用Groovy流程中的组件
  • 信任所有将文件发送到 https Web 服务的 java 类

    我需要编写自己的类来告诉 mule 与服务 wsdl 的 https 连接已验证 我的 mule 项目已经接近完成 但最后一块丢失了 在特定的 url 发送文件 我想要实现的目标 建立连接并将 xml 发送到目标 url 读取 xml 格式

随机推荐