Postman解析JSON响应created_at字段 提取日期值实现超30天用户判定
Postman提取created_at字段实现30天用户判定方案
你之前的脚本仅对响应文本做字符串匹配,没有将响应解析为结构化JSON对象,无法提取字段值做计算,按下面的方法实现即可。
核心实现逻辑
- 调用
pm.response.json()把接口返回的内容转为JavaScript可操作的JSON对象 - 遍历返回的用户数组,取出每个用户的
created_at字段,该字段是标准ISO 8601时间格式,可直接传入Date构造函数转为时间对象 - 计算当前时间和用户创建时间的毫秒差值,换算为天数后和30天阈值比对
- 筛选出创建时长超过30天的用户,传递给后续移除逻辑使用
可直接运行的完整脚本
// 解析响应为JSON对象 const resp = pm.response.json(); // 30天对应的毫秒值,避免不同月份天数不一致导致计算误差 const THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000; // 存储需要移除的用户列表 const needRemoveUsers = []; // 基础响应结构校验,避免接口异常时脚本报错 pm.test("响应结构合法", function () { pm.expect(resp).to.have.property("user").that.is.an("array"); }); // 遍历用户逐个校验创建时间 resp.user.forEach(user => { pm.test(`用户ID${user.id}存在合法created_at字段`, function () { pm.expect(user).to.have.property("created_at").that.is.a("string"); }); const createTime = new Date(user.created_at); const timeDiff = Date.now() - createTime.getTime(); if (timeDiff > THIRTY_DAYS_MS) { needRemoveUsers.push(user); console.log(`用户[${user.id}]创建时间超过30天,加入移除列表,邮箱:${user.email}`); } }); // 将待移除用户列表存入环境变量,后续移除用户的接口可直接读取使用 pm.environment.set("needRemoveUsers", JSON.stringify(needRemoveUsers)); // 后续可直接在这里调用pm.sendRequest发移除请求,或者配合集合运行器跳转到移除用户的请求执行
注意事项
- 字段末尾的
Z代表UTC零时区时间,JS原生Date对象可直接识别,不需要额外做时区转换 - 用毫秒差值计算留存时长,可以避开不同月份天数不同、闰年等场景下的计算错误
- 增加响应结构校验逻辑,避免接口返回异常格式时脚本直接中断
内容的提问来源于stack exchange,提问作者Sean Sugden
相关产品推荐
相关产品推荐

