首页 > 解决方案 > 如何遍历数组并将值保存到环境 Postman

问题描述

我正在尝试将某些值从一个大数组保存到邮递员环境中,以将这些值与另一个邮递员请求的值进行比较。

这是响应代码,它是一个大数组。我想将MeterToNextBollard的所有值保存为带有循环的环境变量。

[
    {
        "id": "",
        "bicsCode": "",
        "number": "",
        "coordinates": {
            "latitude": 0,
            "longitude": 0
        },
        "metersToNextBollard": 20.15,
        "mooringSide": "starboard"
    },
    {
        "id": "",
        "bicsCode": "",
        "number": "",
        "coordinates": {
            "latitude": 0,
            "longitude": 0
        },
        "metersToNextBollard": 24.85,
        "mooringSide": "starboard"
    },
    {
        "id": "",
        "bicsCode": "",
        "number": "",
        "coordinates": {
            "latitude": 0,
            "longitude": 0
        },
        "metersToNextBollard": 18.2,
        "mooringSide": "starboard"
    },

目前我正在使用没有循环的代码,但我认为它可以更干净。

pm.test("Response is ok", function () {
    pm.response.to.have.status(200);
}); 


const resBody = pm.response.json();

postman.setEnvironmentVariable("LT1-B1 MCA Afstand", resBody[0].metersToNextBollard); 

postman.setEnvironmentVariable("LT-B19 MCA Afstand", resBody[18].metersToNextBollard);

postman.setEnvironmentVariable("DBF-D15 MCA Afstand", resBody[19].metersToNextBollard);

postman.setEnvironmentVariable("DBF-D98 MCA Afstand", resBody[102].metersToNextBollard);

postman.setEnvironmentVariable("DDE-1 MCA Afstand", resBody[103].metersToNextBollard);

postman.setEnvironmentVariable("DDE-128 MCA Afstand", resBody[230].metersToNextBollard);

postman.setEnvironmentVariable("DDN-178 MCA Afstand", resBody[231].metersToNextBollard);

postman.setEnvironmentVariable("DDN-224 MCA Afstand", resBody[277].metersToNextBollard);

编辑:

第一个循环有效,但现在我试图在另一个请求中做同样的事情,响应正文如下所示:

"bollards": [
                {
                    "id": ,
                    "number": 1,
                    "description": "DBF-D15",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 11.48,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 2,
                    "description": "DBF-D16",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 3.28,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 3,
                    "description": "DBF-D17",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 11.48,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 4,
                    "description": "DBF-D18",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 13.12,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 5,
                    "description": "DBF-D19",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 11.48,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 6,
                    "description": "DBF-D20",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 3.28,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },
                {
                    "id": ,
                    "number": 7,
                    "description": "DBF-D21",
                    "position": {
                        "latitude": 0.0,
                        "longitude": 0.0
                    },
                    "metersToNextBollard": 11.48,
                    "phantomBollard": false,
                    "mooringSide": "STARBOARD"
                },

标签: javascriptarraysloopspostman

解决方案


我假设这些环境变量应该是唯一的,并且查看我可以看到返回“DDE-59”值的文档。number查看您的 API JSON 数据,似乎每个值都是唯一的,并且在number刚刚粘贴“MCA Afstand”之后。

如果这一切都是真的,您可以为您的数据创建一个 for 循环,如下所示:

const resBody = pm.response.json();

for (let i = 0; i < resBody.length; i++) {
    postman.setEnvironmentVariable(resBody[i].number + "MCA Afstand", resBody[i].metersToNextBollard);
}

除非您真的需要“MCA Afstand”,否则我会说将其从变量名中删除。因为它只是开销,并且可以在您要再次使用该变量时添加。


推荐阅读