Xml WSO2-ESB JSON响应格式

Xml WSO2-ESB JSON响应格式,xml,json,wso2,wso2esb,Xml,Json,Wso2,Wso2esb,我的后端服务使用XML进行响应,并且默认情况下返回它 如果客户机给我一个additions参数(比如:&outout\u format=JSON),我需要在“outSequence”中将响应转换为JSON 例如: <result> <foo>bar</foo> <foo2>bar2</foo2> <nested> <node>value</node> </nested> </resu

我的后端服务使用XML进行响应,并且默认情况下返回它

如果客户机给我一个additions参数(比如:&outout\u format=JSON),我需要在“outSequence”中将响应转换为JSON

例如:

<result>
<foo>bar</foo>
<foo2>bar2</foo2>
<nested>
<node>value</node>
</nested>
</result>
下面是一个测试代理服务(我只是在这里使用inSequence来说明问题):

它的答复是:

{"response":{"result":"success","code":123}}
有没有办法删除根节点“response”使其看起来像这样

{"result":"success","code":123}
当我尝试使用Rich mediator(例如$body/result/*->$body/*)删除节点“result”时,它会变成一个具有多个根节点的无效XML,JSON只包含第一个

我知道可以加载JSON消息,但后端可以返回具有不同格式和不同数量嵌套节点的XML,因此我无法将其硬编码为JSON

似乎我需要实现自己的JSONMessageFromatter?(有代码示例吗?)

UPD:我找到了解决方案(感谢)


$1

在ESB4.7版本中,有效负载工厂中介器支持多种媒体类型,xml和json,您可以相应地进行更改

试试下面的链接


谢谢,您的链接帮助了我
{"response":{"result":"success","code":123}}
{"result":"success","code":123}
<payloadFactory media-type="json">
            <format>$1</format>
            <args>
               <arg expression="$.response" evaluator="json"></arg>
            </args>
</payloadFactory>