从 mule esb 中的 JSON 中提取所有特定字段
Extract all particular field from JSON in mule esb
我有这个 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!!
我之前关注过这个 post -
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)]"
它使用相同的定义。
<flow name="test-mule-json-extractFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/json" doc:name="HTTP"/>
<enricher source="#[(externalListingId in payload.listings.listing)]" target="#[flowVars.ids]" doc:name="Message Enricher">
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
</enricher>
<logger message=":::::::::::::::#[flowVars.ids]" level="INFO" doc:name="Logger"/>
</flow>
注意:您提到的 json 输入无效,因为存在额外的逗号。
我有这个 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!!
我之前关注过这个 post - 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)]"
它使用相同的定义。
<flow name="test-mule-json-extractFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/json" doc:name="HTTP"/>
<enricher source="#[(externalListingId in payload.listings.listing)]" target="#[flowVars.ids]" doc:name="Message Enricher">
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
</enricher>
<logger message=":::::::::::::::#[flowVars.ids]" level="INFO" doc:name="Logger"/>
</flow>
注意:您提到的 json 输入无效,因为存在额外的逗号。