Почтальон обращается к дочерним объектам в Json в тесте

#json #postman

Вопрос:

Я пытаюсь получить доступ к объекту name в этом Json, чтобы ввести локальную переменную в тесте почтальона.

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 уровень, то он вернет неопределенное значение

 let ProductArray=[]; for (let i=0; i lt; Line.length; i  ) { //    ProductArray.push({    "value":Line[i].SalesItemLineDetail.ItemRef.name }) }  

Я также пытался

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

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

все возвращаемые элементы не определены

Каков правильный синтаксис или код?

ТИА

Комментарии:

1. ваш код работает нормально , появляется неопределенное, потому что все элементы в этом массиве не имеют атрибута «имя».

Ответ №1:

В вашем коде не хватает всего нескольких небольших фрагментов. Я воссоздал тест и высмеял те же данные JSON. Я просто добавляю недостающие фрагменты в ваш код, и тест прошел успешно.

ПОЛУЧИТЬ запрос:

 //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 lt; 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 вывод: Дизайн, который также добавляется к переменным среды.