我有这样的骡子流 -
<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;
在对象到json变换器之后,json看起来像这样。
[{"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;
但在那之后,当我尝试将json转换为HashMap时,它会抛出错误 -
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;
但如果我将其更改为java.util.List则没有错误。但在那种情况下,我无法做出选择。
我做错了什么?
答案 0 :(得分:4)
您的SQL查询将返回地图列表。因此,请确保配置变换器以返回一组映射。
<json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap[]"/>