【问题标题】:Confirm responseBody contains partial string in postman确认 responseBody 在邮递员中包含部分字符串
【发布时间】:2017-10-27 03:57:32
【问题描述】:

我是 JSON 新手,无法找到我想要实现的目标的示例。我正在遍历我的 responseBody,试图确认每个返回的设备模型都包含“Tra”的部分文本。如何解析子字符串的值?

{
    "categories:[],
    "equipment":[
        {
            "model":"580 Trac Vac"
        },
        {
            "model":"4X2 Trail Gaitor"
        },
        {
            "model":"Trac Mass-Ter  40'"
        }]
}


//Confirm Model Partial
var jsonData = JSON.parse(responseBody);
var resultCount = jsonData.equipment.length;
for (i=0;i<resultCount;i++){
    var modelString = jsonData.equipment[i].model;
    tests["Resultset " +i+ " contains \"Tra\""] = modelString.has("Tra");
}

我可以做类似的事情还是应该使用一些 jq 和正则表达式的组合?

【问题讨论】:

    标签: json substring postman


    【解决方案1】:

    你可以用modelString.indexOf("Tra")做到这一点

    //Confirm Model Partial
    var jsonData = JSON.parse(responseBody);
    var resultCount = jsonData.equipment.length;
    for (i=0;i<resultCount;i++){
        var modelString = jsonData.equipment[i].model;
        if(modelString.indexOf("Tra") > 0)
        {
           tests["Resultset " +i+ " contains \"Tra\""] = modelString.has("Tra");
        }
    }
    

    或者您可以使用正则表达式来做到这一点,即 Tra

    【讨论】:

    • 完美,谢谢!我试过 indexOf 但没有正确使用它。我的另一个 rtfm 案例。
    【解决方案2】:

    这里是“Tra”几种变体的正则表达式解决方案

    var jsonData = JSON.parse(responseBody);
    var resultCount = jsonData.equipment.length;
    for (i=0;i<resultCount;i++){
        var modelString = jsonData.equipment[i].model;
        var substring = /(?:(?:(?:TRA))|(?:(?:Tra))|(?:(?:tra)(?:.*)))/;
        tests["Resultset " +i+ " contains some form of \"Tra\""] = 
            modelString.has(substring);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 1970-01-01
      • 2014-01-10
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多