如何用JavaScript/Postman预请求脚本动态构建含嵌套数组的JSON结构
Postman预请求脚本动态生成分类数组解决方案
你可以按以下步骤调整代码,适配CSV数据源的动态解析需求:
完整可运行代码
直接复制到Postman预请求脚本栏即可:
// 初始化基础请求体,字段名和默认值可按需修改 const bodyRequest = { "id": 1, "store": 1, "title": pm.variables.get("custom_title"), "url": pm.variables.get("custom_url"), "content": pm.variables.get("content"), "categories": [] } // 读取CSV分类字段值,把括号内的category替换为你CSV里对应的分类字段名 const rawCats = pm.variables.get("category") || "" // 按竖线拆分,自动过滤空值避免生成无效对象 const catList = rawCats.split('|').filter(i => i.trim()) // 遍历生成分类对象填入数组 catList.forEach((val, idx) => { bodyRequest.categories.push({ // 要固定分类ID就写1,要自增就用idx+1 "id": 1, "type": "Type", "name": val, "blog_category_path": val.toLowerCase() }) }) // 将生成的请求体存入环境变量,供请求调用 pm.environment.set("dynamicBody", JSON.stringify(bodyRequest))
请求配置步骤
在Postman的请求「Body」标签页:
- 格式选择
raw->JSON - 内容直接填写
{{dynamicBody}}即可
运行集合时选择对应的CSV数据源,就会自动按你预期的结构生成动态请求体。
原代码问题说明
你之前的写法核心逻辑是对的,一般是几个细节没处理导致不生效:
- 没有提前初始化
bodyRequest.categories空数组,直接调用push会报错 - 硬写了拆分的测试字符串,没有读取CSV对应的动态变量
- 没有把生成的请求体存入Postman变量,请求无法获取构造后的内容
内容的提问来源于stack exchange,提问作者Jose Gomez
相关产品推荐
相关产品推荐

