Postman读取JSON响应中属性名存于数组的属性值报错如何解决
错误原因
- 核心问题是JavaScript属性访问语法用错:
jsonData.keys[a]的写法是先找jsonData里叫keys的属性,再取这个属性的第a个元素。但你的响应JSON里根本没有keys字段,所以jsonData.keys返回undefined,尝试读取undefined[0]就抛出了「Cannot read property '0' of undefined」的错误。
你原本要实现的是:取keys数组第a个元素的值作为属性名,读取jsonData上对应的属性,这种动态属性读取必须用方括号语法实现。
修复后完整代码
var jsonData = pm.response.json(); var keys = ["id", "phoneNumber", "passwordHash"]; pm.test("All values have valid value", function(){ for(var a = 0; a < keys.length; a++){ // 方括号支持传入变量作为属性名 pm.expect(jsonData[keys[a]]).not.equal(null); }; });
可选优化写法
用数组的forEach方法可以简化循环逻辑,代码更易读:
var jsonData = pm.response.json(); var keys = ["id", "phoneNumber", "passwordHash"]; pm.test("All values have valid value", function(){ keys.forEach(key => { pm.expect(jsonData[key]).not.equal(null); }) });
内容的提问来源于stack exchange,提问作者pantau
相关产品推荐
相关产品推荐

