在mule流中将json转换为Hashmap时出错

时间:2015-10-30 17:45:50

标签: mule

我有这样的骡子流 -



<flow name="mule_dbFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <db:select config-ref="Oracle_Configuration" doc:name="Database">
            <db:parameterized-query><![CDATA[SELECT sf.MAESTRO_ID, sf.SFTP_HOST, fm.SOURCE_TYPE, fm.ENCRYPTION, fm.SOURCE_MAESTRO_ID, fm.TARGET_MAESTRO_ID from sftp_mule sf,  filemover_location_tbl 			fm where sf.maestro_id = fm.SOURCE_MAESTRO_ID]]></db:parameterized-query>
        </db:select>
        
        <json:object-to-json-transformer doc:name="Object to JSON"/> 
        <logger level="INFO" doc:name="Logger" message="Data: #[payload]"/>

        <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap"/>
        <logger level="INFO" doc:name="Logger" message="NEW DATA**** #[payload.SOURCE_TYPE]"/>
        
	   <choice doc:name="Choice">
                    <when expression="#[(payload.SOURCE_TYPE == 'file') || (payload.SOURCE_TYPE == 'sftp')]">
                         <json:object-to-json-transformer doc:name="Object to JSON"/>
                		<logger level="INFO" doc:name="Logger" message=“SFTP Data: #[payload]"/>
                    </when>
                    <otherwise>
                        <logger message="Default Choice" level="INFO" doc:name="Logger"/>
                    </otherwise>
         </choice>
    </flow>
&#13;
&#13;
&#13;

在对象到json变换器之后,json看起来像这样。

&#13;
&#13;
[{"SOURCE_MAESTRO_ID":"LIPSTP01_FTUPN","SOURCE_TYPE":"sftp","SFTP_HOST":"sftp.intersourcing.com","TARGET_MAESTRO_ID":"LIPSTP01_PS","MAESTRO_ID":"LIPSTP01_FTUPN","ENCRYPTION":"no"}]
&#13;
&#13;
&#13;

但在那之后,当我尝试将json转换为HashMap时,它会抛出错误 -

&#13;
&#13;
Failed to transform from "json" to "java.util.HashMap". Message payload is of type: String (org.mule.api.transformer.TransformerMessagingException). Message payload is of type: String
&#13;
&#13;
&#13;

但如果我将其更改为java.util.List则没有错误。但在那种情况下,我无法做出选择。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您的SQL查询将返回地图列表。因此,请确保配置变换器以返回一组映射。

<json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap[]"/>