Arrays 变量中的数组就像邮递员中的字符串一样发送

Arrays 变量中的数组就像邮递员中的字符串一样发送,arrays,environment-variables,postman,Arrays,Environment Variables,Postman,我从响应中收集数据,并在“测试”中将其推入数组console.log显示我收到了数组: 然后我将其保存到环境变量中,以便在下次调用中使用。但请求中的值是字符串,因此只有第一个值正在运行 如何设置普通数组 我收集的数据的回应: { "sent": 0, "remaining": 1000000, "gifts": [ { "id": 43468, "amount": 50000, "can_gift_back": true

我从响应中收集数据,并在“测试”中将其推入数组
console.log
显示我收到了数组:

然后我将其保存到环境变量中,以便在下次调用中使用。但请求中的值是字符串,因此只有第一个值正在运行

如何设置普通数组

我收集的数据的回应:

{
  "sent": 0,
  "remaining": 1000000,
  "gifts": [
    {
        "id": 43468,
        "amount": 50000,
        "can_gift_back": true
    },
    {
        "id": 43469,
        "amount": 50000,
        "can_gift_back": true
    }
  ]
}
“测试”选项卡中的我的代码:

让jsonData=pm.response.json();
让礼物=jsonData.gives;
//计算数组长度
函数对象长度(obj){
var结果=0;
用于(obj中的var prop){
if(对象拥有自己的财产(财产)){
结果++;
}    
}
返回结果;
}
让arrayLength=对象长度(礼物);
//将响应数据推送到阵列
var giftsArray=[];
对于(变量i=0;i
UPD:

  • 在以不同的方式使用答案中的代码后,我收到了这样的问题
  • 图片中的第1点描述了使用
    stringify
    时的行为方式

    第2点描述了未使用
    stringify
    时的行为
    2.带有手动输入id的请求JSON示例您可以使用捕获数组中的所有
    id
    值,这是一个可以在Postman应用程序中使用的外部模块

    在此之后,将
    数组
    保存为变量与您之前所做的相同,但我已在数组值周围添加了
    JSON.stringify()
    ,否则它会将其保存为字符串

    let giftsArray = []
    
    _.each(pm.response.json().gifts, (item) => {
        giftsArray.push(item.id)
    })
    
    pm.environment.set('giftsToCollect', JSON.stringify(giftsArray))
    
    然后,您应该能够像这样引用环境变量:

    gift_id:{{giftsToCollect}

    我在本地模拟了请求数据,只是为了向您展示如何从数据中捕获值


    工作方法是将第二次测试的数据添加到第一次测试的“测试”选项卡中。在这种情况下,2d测试不会在整体上运行,但会收集礼物。这不是最好的决定,但它是有效的

    let jsonData = pm.response.json();
    
    let giftsArray = [];
    
    _.each(pm.response.json().gifts, (item) => {
        giftsArray.push(item.id);
    });
    
    pm.sendRequest({
        url: 'http://url/api/gifts/collect',
        method: 'POST',
        header: {
            'Content-type': 'application/json',
            'Host': 'url',
            'accept-encoding': 'gzip, deflate',
            'Connection': 'keep-alive'
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({'api_token': '48696295110ba1e8f9937820dc9b6626', 'user_id': '100650741100901', 'gift_ids': giftsArray, 'version': '6.0.0'})
        }
    }, function (err, res) {
    console.log(res);
    }); 
    

    在将其保存到环境变量时,您是否尝试过将其包装在一个
    JSON.stringify(giftsArray)
    中?@DannyDainton,是的,我在不同的变量中尝试过,但没有帮助。保存的变量看起来像什么,您能用该变量的图像更新吗?您是否尝试过删除请求正文中变量名周围的引号和括号?如果它以数组的形式保存在环境中,那么需要的就是
    {{var_name}}
    语法。保存的变量是[557855795580]。在请求中,它是这样发送的:
    gift\u id=[5578557955805581558255835584558555865587]
    (它是从Fiddler捕获的请求正文),而不是像我的答案屏幕上那样在不同级别上的每个值。事实上,你的代码帮不了我。。。感谢您提供了一个收集ID的简短方法:)代码对您没有帮助吗?:)
    let jsonData = pm.response.json();
    
    let giftsArray = [];
    
    _.each(pm.response.json().gifts, (item) => {
        giftsArray.push(item.id);
    });
    
    pm.sendRequest({
        url: 'http://url/api/gifts/collect',
        method: 'POST',
        header: {
            'Content-type': 'application/json',
            'Host': 'url',
            'accept-encoding': 'gzip, deflate',
            'Connection': 'keep-alive'
        },
        body: {
            mode: 'raw',
            raw: JSON.stringify({'api_token': '48696295110ba1e8f9937820dc9b6626', 'user_id': '100650741100901', 'gift_ids': giftsArray, 'version': '6.0.0'})
        }
    }, function (err, res) {
    console.log(res);
    });