无法在消息中正确提取json数组Enricher mule esb

时间:2015-04-29 07:34:20

标签: mule mule-studio mule-component

我尝试使用消息扩充器提取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"
        },


    ]
}

2 个答案:

答案 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"
        }
    ]
}