使用邮递员从json文件中获取正确的数据

时间:2017-11-02 15:04:01

标签: json postman newman

我目前正在运行Postman, 我也做了以下测试:

pm.test("Addition", function () {
    pm.expect(pm.response.text()).to.include("Sture");
});

pm.test("amount", function () {
    pm.expect(pm.response.text()).to.include("60");

});

(参见下面的json文件)

[
    {
        "MyList": "BeforeCarl",
        "MyListTotalAmount": "90,92",
        "Mylist2": 
        [
            {
                "name": "Dennis",
                "amount": "10,00"
            },
            {
                "name": "Sture",
                "amount": "60,00"
            },
            {
                "name": "Anders",
                "amount": "30,00"
            }
        ]
    },
    {
        "MyList": "",
        "MyListTotalAmount": "40,00",
        "Mylist2": 
        [
            {
                "name": "Nils",
                "amount": "50,00",
                "": ""
            },
            {
                "name": "Helena",
                "amount": "60,00"
            },
            {
                "name": "Lena",
                "amount": "60,00"
            },
            {
                "name": "Stina",
                "amount": "50,00"
            }
        ]
    },
    {
        "MyList": "Lars",
        "MyListTotalAmount": "10,00",
        "MyList2": 
        [
            {
                "name": "Sten",
                "amount": "50,00"
            },
            {
                "name": "Stig",
                "amount": "30,00"
            }
        ]
    }
]

我现在的问题是我想要获取:

 {
                "name": "Helena",
                "amount": "60,00"
            },

我的代码错误的是:
1。它创建了前2个测试(没有必要)
2。每个获取的字符串可以是JSON中的任何位置。

我希望代码只检查该部分:

        {
            "name": "Helena",
            "amount": "60,00"
        }

有人可以帮我解决问题吗?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

那么, 如果你想要定位一段代码,你可以解析你的JSON响应(顺便说一下,要注意标志,你要混合使用MyList2和Mylist2(小写'l')=>我在Mylist2中重命名。

当你解析JSON主体时,就像下面的例子一样,你可以检查值......我不熟悉pm.expect的用法,所以我用'旧'方式做,但你很容易转换它:< / p>

var jsonData = JSON.parse(responseBody);

console.log("json = " + jsonData)
for (i=0; i< jsonData.length;i++){
    console.log("json[i] = " + jsonData[i].Mylist2[0].name) 
    console.log("json[i].length = " + jsonData[i].Mylist2.length)
    for(j=0;j<jsonData[i].Mylist2.length;j++)
    {
        console.log("    json[i].mylist = " + jsonData[i].Mylist2[j].name)   
        if(jsonData[i].Mylist2[j].name == 'Helena') 
            {
                tests["Helena amount 60 ?"] = jsonData[i].Mylist2[j].amount == '60,00'
            }
    }
}

我放了很多控制台输出,这样你就可以看到发生了什么...测试[...]相当于pm.expect。