json - 从 mule esb 中的 JSON 中提取所有特定字段

标签 json groovy mule mule-studio mvel

我有这个 json 负载,我想一次性收集所有 externalListingId -

{
"listings": {
    "numFound": 3,
    "listing": [
        {
            "status": "INACTIVE",
            "pricePerTicket": {
                "amount": 100,
                "currency": "USD",
            },
            "paymentType": "1",
            "externalListingId": "12208278",
            "city": "New York"
        },
        {   "status": "ACTIVE",
            "pricePerTicket": {
                "amount": 4444,
                "currency": "USD"
            },
            "paymentType": "1",
            "externalListingId": "CID1421798897102:151681733",
            "city": "Seattle"
        }
      ]
   }
}

我正在使用 MVEL 表达式 -

<enricher target="#[flowVars['sData']]" source="#[(externalListingId in payload.listing)]" doc:name="Message Enricher">
    <json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
    </enricher>

但是这是错误的!! - 消息负载的类型为:ReleasingInputStream。

场景 - 我想将所有 externalListingId 收集到 flowVariable 中,转换为 hashmap。我有另一个 CSV 文件作为输入,想遍历该有效负载并检查此映射是否包含 id!!

我正在关注这篇较早的帖子 - Extracting array from JSON in mule esb

最佳答案

您需要将消息的流式负载转换为具有以下内容的对象:

<json:json-to-object-transformer returnClass="java.lang.Object" />

enricher 之前,删除其中的内容。

您还需要修复 MEL,因为其中缺少 listings 属性:

source="#[(externalListingId in payload.listings.listing)]"

来源:http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Tips#MuleExpressionLanguageTips-JSONProcessing

关于json - 从 mule esb 中的 JSON 中提取所有特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29086982/

相关文章:

mule - 将参数传递给 mule esb 中的 SOAP 请求

java - Mule - 使用 Maven 运行时项目构建失败

javascript - 根据特定值过滤嵌套 JSON

java - 如何使用 Groovy 或 Java 捕获 telnet 提示符?

grails - ERR_TOO_MANY_REDIRECTS在grails中

grails - Grails GORM按对象属性的属性查找

java - Mule 持久 ActiveMQ 重新交付策略

javascript通过json对象移动如何判断元素是否存在

Python 从流中生成 JSON 文档

C# 与 PHP 脚本通信时无法创建 SSL/TLS 安全通道异常