从Mule中的JSON响应中提取字段

时间:2015-07-07 06:15:29

标签: json mule mule-studio

我有一个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

如何解决此错误?

由于

4 个答案:

答案 0 :(得分:0)

我能够通过编写自定义转换器

来完成这项工作

答案 1 :(得分:0)

删除最后四行代码。在flowvars中设置记录器#[payload.id]并访问它

答案 2 :(得分:0)

我相信你所得到的错误已经在这部分<collection-splitter />。你已经调试过了吗?

不确定分割器的用途,但只要有HashMap类型的有效负载,就可以{i} #[payload.id]获取id。

答案 3 :(得分:0)

JSon模块也能够在表达式中使用jsonpath,例如:

#[json:/id]