Swapan Sur
Swapan Sur

Reputation: 71

Error in transforming a json to Hashmap in mule flow

I have a mule flow like this --

<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>

After the object-to-json-transformer the json looks like this.

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

But after that when i try to transform the json to a HashMap it throws error --

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

But if i change it to java.util.List there is no error. But in that case I am not able to perform the choice.

What am i doing wrong ?

Upvotes: 0

Views: 6636

Answers (1)

Ryan Carter
Ryan Carter

Reputation: 11606

Your SQL query will return a List of Maps. So make sure you configure the transformer to return an array of maps.

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

Upvotes: 4

Related Questions