我尝试使用消息扩充器提取json数组数据。但是在输出中我得到了一些对象数据。我怎样才能正确获取?
以下是我的流程
<flow name="readfileFlow1" doc:name="readfileFlow1">
<file:inbound-endpoint path="Test" moveToDirectory="Backup" responseTimeout="10000" doc:name="File"/>
<enricher source="#[(name in payload.data)]" target="#[flowVars.myMap]" doc:name="Message Enricher">
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
</enricher>
<logger message="#[payload.toString()]" level="INFO" doc:name="Logger"/>
</flow>
当我在记录器中打印时,我得到了以下输出
INFO 2015-04-29 13:01:20,409 [[readfile].readfileFlow1.stage1.02] org.mule.api.processor.LoggerMessageProcessor: org.mule.transport.file.ReceiverFileInputStream@15bc5cc
如何正确提取所有名称 我试过为每个人使用。使用每个我都可以成功提取。但是想要使用消息丰富。如何使用消息丰富 MVEL ??
来完成此操作我的json数据如下......
{
"data":[
{
"id" : "1",
"name": "AAA"
},
{
"id" : "5",
"name": "DDD"
},
{
"id" : "6",
"name": "CCC"
},
]
}
答案 0 :(得分:1)
我做到了这一点.. 我做的傻错 以下是我的回答
<logger message="#[flowVars.myMap]" level="INFO" doc:name="Logger"/>
答案 1 :(得分:0)
这是如何从JSON有效负载中提取名称和ID的方法..您将在logger中获取它
<flow name="readfileFlow1" doc:name="readfileFlow1">
<file:inbound-endpoint path="Test" moveToDirectory="Backup" responseTimeout="10000" doc:name="File"/>
<enricher source="#[message.payload]" target="#[flowVars.myMap]" doc:name="Message Enricher">
<processor-chain doc:name="Processor Chain">
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>
<foreach collection="#[payload.data]">
<logger level="INFO" message="Name :- #[payload.name] and Id:- #[payload.id]"/>
</foreach>
</processor-chain>
</enricher>
<logger level="INFO" message="#[flowVars.myMap]"/>
</flow>
JSON有效负载无效的另一件事是...尝试在末尾删除额外的,
..所以你的有效JSON文件将是: -
{
"data":[
{
"id" : "1",
"name": "AAA"
},
{
"id" : "5",
"name": "DDD"
},
{
"id" : "6",
"name": "CCC"
}
]
}