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