Postman中如何将指定路线的最近发车时间存入变量
解决方法
首先,你的问题核心是没正确处理JSON里的数组结构——API返回的route_departures应该是一个路线数组,每个路线对象包含global_route_id和对应的发车信息。下面是正确的测试脚本:
// 解析API返回的JSON响应 const responseData = pm.response.json(); // 1. 筛选出global_route_id为"TSL:1900"的路线 const targetRoute = responseData.route_departures.find(route => route.global_route_id === "TSL:1900" ); if (!targetRoute) { console.log("未找到指定路线TSL:1900"); return; } // 2. 获取该路线的所有发车时间列表 const departureTimes = targetRoute.itineraries.schedule_items.map(item => new Date(item.departure_time) ); // 3. 找到最早的发车时间 const earliestDeparture = new Date(Math.min(...departureTimes)); // 4. 将最早时间存入环境变量(格式转为字符串,可根据实际需求调整格式) pm.environment.set("upcoming_departure", earliestDeparture.toISOString());
关键说明:
find()方法:从route_departures数组中精准匹配目标路线,解决你之前直接访问对象属性的错误(因为route_departures是数组而非单个对象)map()+Date转换:把字符串格式的发车时间转为Date对象,方便直接比较时间先后Math.min(...departureTimes):快速找出最小的时间值,再转回Date对象得到最早发车时间- 新增判断逻辑:如果未找到目标路线会打印提示,避免脚本无意义报错
调试小技巧:
可以在脚本中添加console.log(targetRoute),查看筛选出的路线结构是否正确,确认itineraries.schedule_items的层级是否和你的API返回一致。
内容的提问来源于stack exchange,提问作者WesternBiscuit
相关产品推荐
相关产品推荐

