【问题标题】:Is there a way in Postman to change xml2Json conversion rules?Postman 有没有办法更改 xml2Json 转换规则?
【发布时间】:2018-08-04 17:46:03
【问题描述】:

在某些情况下,我需要转换我的 XML 响应,并且在多种情况下,我的节点会出现一次或多次次。 如果它看起来像这样 bbb 将只是另一个元素:

<aaa>
 <bbb>ccc</bbb>
</aaa>

要获得 ccc 值,我必须像这样访问 json:pm.response.json().aaa.bbb

但是如果 XML 看起来像这样 bbb 将变成数组:

<aaa>
 <bbb>ccc</bbb>
 <bbb>ddd</bbb>
</aaa>

要获得 ccc 值,我必须像这样访问 json:pm.response.json().aaa.bbb[0]

稍后,当我使用 JSON 数据时,我需要始终检查是否有一个或多个从提供程序返回的元素。我想要的是避免一直检查Array.isArray... 并强制它为数组。有这样的选择吗?

【问题讨论】:

  • 有什么方法可以使用内置的 XML 转换器来帮助您? var jsonObject = xml2Json(responseBody); 这是文档中示例的语法。我不完全理解这个问题,无法给出更好的回答。
  • 我正在使用 var jsonObject = xml2Json(responseBody);,这就是问题所在。默认情况下,它不区分潜在的数组,如果它只得到一个 bbb 的响应,它将把它转换为常规元素,而如果有更多它将是数组......更正了这个问题以使其更清楚跨度>

标签: json xml postman xml-to-json


【解决方案1】:

我创建了这组函数,希望对你有帮助(我认为transformIntoSingleElement是你要找的):

function stackTrace() {
    var err = new Error();
    console.log(err.stack);
    return err;
}
function transformIntoArray(element, mandatory){
    mandatory = (mandatory!==undefined)?mandatory:true;
    if(element === undefined && mandatory){
        stackTrace();
        return element;
    }
    if(element === undefined)
        return [];
    if(element.constructor.name != "Array")
        return [element];
    return element;
}
function transformIntoSingleElement(element, index, mandatory){
    mandatory = (mandatory!==undefined)?mandatory:true;
    if(element === undefined && mandatory){
        stackTrace();
        return element;
    }
    if(element === undefined){
        return element;
    }
    if(element.constructor.name == "Array"){
        if(element.length >= index)
            return element[index];
        return element[0];
    }
    return element;
}
function getElementValue(element, dflt, mandatory){
    dflt = dflt || "";
    mandatory = (mandatory!==undefined)?mandatory:true;
    if(element === undefined && mandatory){
        stackTrace();
        return element;
    }
    if(element === undefined)
        return dflt;
    if(element._ === undefined)
        return element;
    return element._;
}
function getAttributeValue(element, attribute, dflt, mandatory){
    dflt = dflt || "";
    mandatory = (mandatory!==undefined)?mandatory:true;
    if(element === undefined && mandatory){
        stackTrace();
        return element;
    }
    if(element.$ !== undefined && element.$[attribute] !== undefined && (element.$[attribute] !== "" || (element.$[attribute] === "" && mandatory))){
        return element.$[attribute];
    }
    return dflt;
}

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2013-03-07
    • 2021-12-24
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多