如何从postman中的JSONArray获取JSONobject

时间:2018-02-12 11:55:12

标签: postman

我正在尝试使用测试脚本在邮递员中自动调整注册方案 我有以下JsonArray作为回复:

[
    {
        "id": 1,
        "name": "user_A",
        "cntkp": "martin",
        "company": "kreativ",
        "tel": "12345678",
        "email": "user_A@gmail.com"
        "street": "str. 0001",
        "city": "DEF",
    }
    ......
    ......
    ......
    {
        "id": 4,
        "name": "user_B",
        "cntkp": "martin",
        "company": "kreativ",
        "tel": "12345678",
        "email": "user_B@gmail.com"
        "street": "str. 0002",
        "city": "NJ",
    }
    ......
    ......
    ......
    {
        "id": 10,
        "name": "User_C",
        "cntkp": "martin",
        "company": "kreativ",
        "tel": "12345678",
        "email": "user_C@gmail.com"
        "street": "str. 0003",
        "city": "ABC",
    }
    ......
]

数组长度可以是动态的并且已更改(在此示例中为10)并且想要使用特殊电子邮件(数组中的某个位置)查找对象,然后从该对象获取ID并根据此处的JsonData进行断言object(catch元素,例如check name)。

我该怎么做?

感谢您的支持。

我发送GETrequest以从注册数据库获取所有数据。 作为回应,我得到了一个JsonArray 从Json数组我需要断言的特定对象(例如,样本中带有电子邮件user_B的对象)。 我知道我的电子邮件地址,基于它我必须从对象中找到ID。 当我知道哪个ID是我的ID时,我可以这样做但是如果它是动态的我不知道如何在邮递员中搜索数组以获取ID

例如,断言公司名称

pm.expect(jsonData[0].company).to.equal(pm.environment.get("regDB_new_company"))

但如果我不知道ID(只知道我的电子邮件),我首先要找出对象的ID,然后我就可以了。

e.g。 在这种情况下,首先,使用电子邮件找到对象" user_B@gmail.com" 然后从该对象获取ID元素(在本例中为4) 然后我想断言来自对象的所有数据

1 个答案:

答案 0 :(得分:1)

谢谢Danny,我找到了解决方案

var arr = pm.response.json()

for(i = 0; i < arr.length; i++) {
    if (arr[i].email == "userB@gmail.com") {
        pm.environment.set("personID", arr[i].id)
    }
}