Postman Test中访问JSON嵌套子对象返回undefined如何解决
Postman Test 提取嵌套字段正确实现
你出现报错的核心原因是没有先将接口响应的JSON字符串转为可操作的JS对象,也没有从根对象下获取Line数组,直接调用Line.length自然找不到对应层级的数据,你之前的属性访问语法本身是正确的。
正确的完整代码如下:
// 第一步:获取接口响应的JSON对象(Postman Test 固定语法) const resJson = pm.response.json(); // 第二步:从根对象下取Line数组,增加非空校验避免异常 const lineArr = resJson.Line || []; let ProductArray = []; for (let i = 0; i < lineArr.length; i++) { // 增加类型判断,过滤非销售项类型的Line节点,避免无对应字段报错 if (lineArr[i].DetailType === "SalesItemLineDetail" && lineArr[i].SalesItemLineDetail?.ItemRef) { ProductArray.push({ "value": lineArr[i].SalesItemLineDetail.ItemRef.name }) } } // 可选操作:将结果存入Postman局部变量供后续请求调用 pm.variables.set("product_array", JSON.stringify(ProductArray));
补充说明
如果只需要获取单个Line项的name值,可以直接通过索引定位,不需要遍历:
const firstName = resJson.Line[0].SalesItemLineDetail.ItemRef.name pm.variables.set("first_item_name", firstName);
内容的提问来源于stack exchange,提问作者mbposter
相关产品推荐
相关产品推荐

