WSO2 - 如何使用脚本调解器将此XML转换为Json?

问题描述:

我使用WSO2 ESB和DDS来创建一个API来从数据库读取数据,最后我得到了这个回应。如何使用脚本调解器将此XML转换为Json?请给我一个例子。WSO2 - 如何使用脚本调解器将此XML转换为Json?

<?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> 
<soapenv:Body> 
    <employeeCollection xmlns="http://employee.us.wso2.com"> 
     <employee> 
      <EmployeeID>17</EmployeeID> 
      <FirstName>jak</FirstName> 
      <LastName>123</LastName> 
      <Team>ok</Team> 
     </employee> 
     <employee> 
      <EmployeeID>18</EmployeeID> 
      <FirstName>jak</FirstName> 
      <LastName>123</LastName> 
      <Team>ok</Team> 
     </employee> 
     <employee> 
      <EmployeeID>19</EmployeeID> 
      <FirstName>jak</FirstName> 
      <LastName>123</LastName> 
      <Team>ok</Team> 
     </employee> 

    </employeeCollection> 
</soapenv:Body> 

这是配置

<resource methods="POST" uri-template="/team"> 
    <inSequence> 
    <sequence key="conf:/SendSelectWithTeam"/> 
    <call> 
     <endpoint> 
      <address uri="https://192.168.2.165:9453/services/EmployeesDataService/" format="soap12"/> 
     </endpoint> 
    </call> 

    <respond/> 
    </inSequence> 

另一个问题:如何让每一个 “雇员” 使用脚本中介的价值?

如果您只是想直接将其转换为json,则不需要使用脚本中介手动执行此操作。

您可以像这样更新ESB代理(或API)的输出序列,它会将响应xml转换为json。

<outSequence> 
    <property name="messageType" value="application/json" scope="axis2"/> 
    <send/> 
</outSequence> 

查看WSO2 Docs了解更多详情。

编辑:

在你的情况,如果你使用<respond>调解员,它会绕过失序,以及我的建议是行不通的。你有2个选项来使它工作。

1)使用发送中介而不是callrespond中介。

2)使用loopback调解员,而不是respond调停。

+0

感谢,它的工作。但我想修改响应。如果使用脚本,如何获得第一个“EmployeeID”的值? –

+0

试试这个。 '' – Bee

+0

getPayloadJSON的返回值为null –

请参考以下链接

How to convert SOAP response with xsi values to json in WSO2esb

请更改代理服务器设置outSequence配置文件中的象下面这样:

<outSequence xmlns="http://ws.apache.org/ns/synapse"> 
    <property name="messageType" value="application/json/badgerfish" scope="axis2" type="STRING"></property> 
    <send></send> 
</outSequence>