【问题标题】:Postman accessing child objects in Json in a Test邮递员在测试中访问 Json 中的子对象
【发布时间】:2021-10-31 16:29:58
【问题描述】:

我正在尝试访问此 Json 中的名称对象以将局部变量放入 Postman 测试中。

json {

    "Line": [
        {
            "Id": "1",
            "LineNum": 1,
            "Description": "Custom Design",
            "Amount": 75.00,
            "DetailType": "SalesItemLineDetail",
            "SalesItemLineDetail": {
                "ItemRef": {
                    "value": "4",
                    "name": "Design"
                },
                "UnitPrice": 75,
                "Qty": 1,
                "ItemAccountRef": {
                    "value": "82",
                    "name": "Design income"
                },
                "TaxCodeRef": {
                    "value": "NON"
                }
            }
            
        }
        ]

}

我正在使用此代码循环遍历线阵列,但如果我尝试深入到 1 级 Itemref 它将返回 undefined

let ProductArray=[];
for (let i=0; i < Line.length; i++) {
//


    ProductArray.push({
     
      "value":Line[i].SalesItemLineDetail.ItemRef.name
})
}

我也试过

'"value":Line[i].SalesItemLineDetail["ItemRef"].name

"value":Line[i].SalesItemLineDetail["ItemRef"]["name"]

全部返回未定义的ItemRef

什么是正确的语法或代码?

TIA

【问题讨论】:

  • 您的代码工作正常,未定义的即将出现,因为该数组中的所有元素都没有“名称”属性

标签: json postman


【解决方案1】:

您的代码中缺少一些小片段。我重新创建了一个测试并模拟了相同的 JSON 数据。我只是将缺少的部分添加到您的代码中,测试成功。

GET 请求:

//Response body JSON
{
    "Line": [
        {
            "Id": "1",
            "LineNum": 1,
            "Description": "Custom Design",
            "Amount": 75,
            "DetailType": "SalesItemLineDetail",
            "SalesItemLineDetail": {
                "ItemRef": {
                    "value": "4",
                    "name": "Design"
                },
                "UnitPrice": 75,
                "Qty": 1,
                "ItemAccountRef": {
                    "value": "82",
                    "name": "Design income"
                },
                "TaxCodeRef": {
                    "value": "NON"
                }
            }
        }
    ]
}

// Tests
// Check response body
const res = pm.response.json().Line;

let ProductArray=[];
for (let i=0; i < res.length; i++) {
    const res = pm.response.json().Line;
    ProductArray.push({
      "value":res[i].SalesItemLineDetail.ItemRef.name
    })

    // Lets see console.log result
    console.log('Check For:', res[i].SalesItemLineDetail.ItemRef.name)
    
    // Set Result to environment variables
    pm.environment.set("variable_key", res[i].SalesItemLineDetail.ItemRef.name);
}

console.log 输出:设计,也添加到环境变量中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2021-05-12
    • 2019-10-06
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多