Есть ли в Postman способ изменить правила преобразования xml2Json?

У меня есть несколько случаев, когда мне нужно преобразовать свой 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... все время и заставить его быть массивом. Есть ли такой вариант?

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;
}
Другие вопросы по тегам