我有一个JSON响应,就像{" id":10," name":" ABCD"," deptId": 0,"地址":空}
我需要拆分此JSON并提取id以传递给另一个服务。 我的mule xml如下所示
<jersey:resources doc:name="REST">
<component class="com.employee.service.EmployeeService"/>
</jersey:resources>
<object-to-string-transformer doc:name="Object to String"/>
<logger message="Employee Response #[payload]" level="INFO" doc:name="Logger"/>
<set-payload value="#[payload]" doc:name="Set Payload" />
<json:object-to-json-transformer doc:name="Convert String to JSON" />
<logger message="JSON Response #[payload]" level="INFO" doc:name="Logger"/>
<json:json-to-object-transformer returnClass="java.util.Map" />
<expression-transformer expression="#[payload]" />
<collection-splitter />
当我运行此操作时,我收到错误
Object&#34; java.util.LinkedHashMap&#34;不正确的类型。它必须是&#34; {interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}&#34; (java.lang.IllegalArgumentException异常)。消息有效内容的类型为:LinkedHashMap
如何解决此错误?
由于
答案 0 :(得分:0)
我能够通过编写自定义转换器
来完成这项工作答案 1 :(得分:0)
删除最后四行代码。在flowvars中设置记录器#[payload.id]并访问它
答案 2 :(得分:0)
我相信你所得到的错误已经在这部分<collection-splitter />
。你已经调试过了吗?
不确定分割器的用途,但只要有HashMap类型的有效负载,就可以{i} #[payload.id]
获取id。
答案 3 :(得分:0)
JSon模块也能够在表达式中使用jsonpath,例如:
#[json:/id]