首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Mule中的JSON响应中提取字段

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

Stack Overflow用户
提问于 2015-07-07 14:15:29
回答 4查看 934关注 0票数 0

我有一个JSON响应,类似于{"id":10,"name":"ABCD","deptId":0,"address":null}

我需要拆分这个JSON并提取id以传递给另一个服务。我的mule xml如下所示

代码语言:javascript
复制
   <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 />

当我运行此命令时,我得到以下错误

对象"java.util.LinkedHashMap“的类型不正确。类型必须为“{接口java.lang.Iterable,接口java.util.Iterator,接口org.mule.routing.MessageSequence,接口java.util.Collection}”(java.lang.IllegalArgumentException)。消息负载的类型为: LinkedHashMap

如何修复此错误?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2015-07-07 16:59:57

我可以通过编写一个自定义的转换器来实现这一点。

票数 0
EN

Stack Overflow用户

发布于 2015-07-07 17:38:27

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

票数 0
EN

Stack Overflow用户

发布于 2015-07-07 22:48:52

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

不确定拆分器是用来做什么的,但是一旦有了HashMap类型的有效负载,就可以简单地执行#[payload.id]来获取id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31261102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档