在Postman中根据最大CreatedDate获取对应ExperimentId
问题:在Postman中获取CreatedDate最新的ExperimentId
我有如下JSON响应体:
[ { "ExperimentPlanningId": 20, "ExperimentId": "PT1011", "AnalystId": 2, "ExperimentTemplateId": 1, "NumberoFPools": null, "ExperimentStatus": "InProgress", "NextProcess": "234343", "CurrentProcess": "Test Process 1", "NextStage": "Stage 1 2", "CurrentStage": "Stage 1 2", "NextProcessStartDate": "2022-10-15T14:00:00+00:00", "CurrentProcessEndDate": "2022-10-15T14:00:00+00:00", "ExperimentStartDate": "2022-10-14T15:00:00+00:00", "ProjectedOutcome": null, "ExperimentalDesign": null, "IsActive": true, "CreatedDate": "2022-10-14T20:10:42.8276862+00:00" }, { "ExperimentPlanningId": 20, "ExperimentId": "JD2994", "AnalystId": 2, "ExperimentTemplateId": 1, "NumberoFPools": null, "ExperimentStatus": "InProgress", "NextProcess": "234343", "CurrentProcess": "Test Process 1", "NextStage": "Stage 1 2", "CurrentStage": "Stage 1 2", "NextProcessStartDate": "2022-10-15T14:00:00+00:00", "CurrentProcessEndDate": "2022-10-15T14:00:00+00:00", "ExperimentStartDate": "2022-10-14T15:00:00+00:00", "ProjectedOutcome": null, "ExperimentalDesign": null, "IsActive": true, "CreatedDate": "2023-03-31T16:23:19.5981913+00:00" } ]
需求:遍历响应体,找到CreatedDate最大的条目,将其ExperimentId存入Postman变量(示例中应为JD2994)。
尝试的代码(报错max未定义):
var jsonData = JSON.parse(responseBody) for (var i=0, len = jsonData.length; i<len; i++) { var value = max(jsonData[i]["CreatedDate"]); }
错误原因
- JavaScript中不存在全局的
max()函数,你可能混淆了Math.max(),但该函数需要传入多个数值参数,无法直接处理日期字符串。 - 代码逻辑缺失:没有维护全局的最大值变量,仅单独处理每个条目,未做比较更新。
正确实现代码
// 解析响应体为JSON数组 const jsonData = JSON.parse(responseBody); // 初始化变量,存储最大日期和对应实验ID let maxDate = null; let latestExperimentId = ""; // 遍历所有实验条目 jsonData.forEach(item => { // 将日期字符串转为Date对象,方便比较 const currentDate = new Date(item.CreatedDate); // 首次遍历或当前日期更大时,更新最大值和对应ID if (!maxDate || currentDate > maxDate) { maxDate = currentDate; latestExperimentId = item.ExperimentId; } }); // 将结果存入环境变量(如需全局变量,替换为pm.globals.set) pm.environment.set("latestExperimentId", latestExperimentId);
代码说明
- 把日期字符串转为
Date对象后,可以直接用比较运算符判断先后。 - 通过遍历逐一比较,始终保留最新的日期和对应的
ExperimentId。 - 最后使用Postman的API将结果存入变量,后续请求可直接调用。
内容的提问来源于stack exchange,提问作者JD2775
相关产品推荐
相关产品推荐

