如何遍历string[]类型SsNumber数组生成JSON对象用于转XML
遍历数组生成多节点JSON结构用于XML转换
要解决遍历SsNumber数组生成对应数量someRequest节点的问题,只需对数组做遍历映射,将每个元素传入getSomeRequest生成结构,再把结果以数组形式赋值给someRequest即可。大多数XML-JSON转换库(如xml2js)会自动将数组转换为多个同名XML节点。
修改后的代码
const SsNumber = ["123","234","345"]; // 重命名参数避免和全局变量同名,提升可读性 const getSomeRequest = (ssNum) => { return { $: { 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:type': "someType", key: ssNum, keyType: 'Nbr', version: "1.0", pageItems: "2", pageToken: '', }, }; }; const mapCustomerInfoEnvelope = ({ SsNumber }) => { const envelope = { 'SOAP-ENV:Envelope': { $: { 'xmlns:SOAP-ENV': 'http://schemas.xmlsoap.org/soap/envelope/', }, 'SOAP-ENV:Header': "", 'SOAP-ENV:Body': { Multiple: { $: { xmlns: "123", }, MultipleRequest: { // 遍历数组生成每个someRequest节点 someRequest: SsNumber.map(ssNum => getSomeRequest(ssNum)) }, }, }, }, }; return envelope; };
关键修改说明
- 使用
Array.map()遍历SsNumber数组,为每个元素生成对应的someRequest结构 - 将
someRequest的值设置为映射后的数组,转换为XML时会自动生成对应数量的<someRequest>节点,每个节点的key匹配数组中的元素 - 把
getSomeRequest的参数名从SsNumber改为ssNum,避免和全局变量同名造成混淆
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

