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)使用发送中介而不是call
和respond
中介。
或
2)使用loopback
调解员,而不是respond
调停。
答
请参考以下链接
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>
感谢,它的工作。但我想修改响应。如果使用脚本,如何获得第一个“EmployeeID”的值? –
试试这个。 '' – Bee
getPayloadJSON的返回值为null –