【发布时间】:2021-05-06 12:48:30
【问题描述】:
我正在尝试将来自我们客户的soap请求转换为我们使用wso2脚本中介的REST服务。
输入(SOAP):
<tran:Request xmlns:tran="http://schemas.demo.com/tran.xsd" xmlns:sub="http://schemas.demo.com/admin.xsd" ...>
<tran:Specific>
<tran:Subject>
<sub:Transaction>
<sub:postingIndicator>false</sub:postingIndicator>
<sub:referenceId>23645723</sub:referenceId>
<sub:entries>
<sub:entry>
<sub:accountNumber>AC0123456</sub:accountNumber>
<sub:credit>true</sub:credit>
<sub:amount>
<sub:amountValue>20</sub:amountValue>
<sub:currencySymbol>USD</sub:currencySymbol>
</sub:amount>
</sub:entry>
<sub:entry>
<sub:accountId>AC987654</sub:accountId>
<sub:credit>false</sub:credit>
<sub:amount>
<sub:amountValue>20</sub:amountValue>
<sub:currencySymbol>USD</sub:currencySymbol>
</sub:amount>
</sub:entry>
<sub:entry> .....
</sub:entries>
</sub:Transaction>
</tran:Subject>
</tran:Specific>
</tran:Request>
预期输出(JSON):
{
"indicator": false,
"reference": 23645723,
"postingEntries": [
{
"accountId": "AC0123456",
"credit": "true",
"amount": {
"value": "20",
"currency": "USD"
}
},
{
"accountId": "AC987654",
"credit": "false",
"amount": {
"value": "20",
"currency": "USD"
}
},
.....
]
}
到目前为止,我能够将“非数组”xml 元素映射到 JSON,但停留在迭代 entries“xml 数组”。这是我现在拥有的脚本中介。
<sequence name="soap-to-rest" xmlns="http://ws.apache.org/ns/synapse">
<script language="js">
<![CDATA[
var log = mc.getServiceLog();
var payload = mc.getPayloadXML();
log.info(payload);
var adminns = new Namespace('http://schemas.demo.com/admin.xsd');
// How to iterate the <sub:entries> and fill this array up? <===========
var postingEntries[];
mc.setPayloadJSON(
{
"indicator": mc.getPayloadXML()..adminns::postingIndicator.toString(),
"reference": mc.getPayloadXML()..adminns::referenceId.toString(),
"postingEntries": postingEntries
}
);
]]>
</script>
</sequence>
如何在mc.setPayloadJSON() 中设置postingEntries json 数组?
【问题讨论】:
标签: wso2 wso2esb wso2ei synapse