从响应中获取特定值

时间:2019-04-05 01:17:40

标签: json api postman

我正在尝试根据响应中的特定值设置邮递员环境变量。

我不确定用于获取价值的代码。

我知道我需要将响应设置为变量,如下所示:

var response = JSON.parse(responseBody);

我知道我可以使用以下设置我的环境变量:

postman.setEnvironmentVariable("category_ref",myVariableName);

以下是我的回复中的摘录:

{
    "id": 45,
    "name": "Accommodation",
    "description": ""
},
{
    "id": 46,
    "name": "Accommodation (Engineering)",
    "description": ""
},

我想基于我已经知道的“名称”值来获取“ id”值。

一个例子是,我希望我的代码给我一个ID,其中“名称” =“住宿”

编辑:

更改为原始问题,遵循以下答案。

我的测试代码现在看起来像这样:

//Ensure the API Test Category is present
var response = JSON.parse(responseBody);
tests["my test"] = responseBody.has("Accommodation");

//pass in id into variable for delete step
var requiredId = pm.response.json().find(function(element){
    if (element.name == "Accommodation"){
        return element.id;
    }
});

stringId = JSON.stringify(requiredId);

pm.environment.set("category_ref",stringId);

console.log("my string "+stringId);

我到控制台的输出如下所示,这也是发送到category_ref环境变量的值:

my string {"id":45,"name":"Accommodation","description":""}

剩下的问题是,我不想像上面那样返回所有元素,我只想返回“ 45”,这是id =住所的id值。

1 个答案:

答案 0 :(得分:1)

Postman中的测试只是JavaScript,因此您可以按以下方式使用Array.find()

响应正文:

[
    {
        "id": 45,
        "name": "Accommodation",
        "description": null
    },
    {
        "id": 46,
        "name": "Accommodation (Engineering)",
        "description": null
    }
]

测试窗口:

var matchedItem = pm.response.json().find(function(element) {
    if (element.name == "Accommodation") {
        return element;
    }
});

console.log(matchedItem.id);