Postman测试json-server接口时无法读取响应JSON值问题求助
问题原因
你调用http://localhost:3000/users接口时,json-server会直接返回db.json中users字段对应的数组作为响应根节点,而非包裹了users字段的对象。因此你代码中的jsonData.users是undefined,读取undefined[0]就触发了该报错。
解决方案
方案1:直接按索引取值(适合确定数组顺序固定的场景)
直接修改测试代码如下:
pm.test("校验id为1的用户firstName", function () { var jsonData = pm.response.json(); // 响应本身就是用户数组,无需再访问users属性 pm.expect(jsonData[0].firstName).to.eql('UserOne'); });
方案2:按id筛选取值(更稳妥,不受数组顺序变化影响)
如果后续用户数组顺序可能调整,建议通过id匹配目标用户:
pm.test("校验id为1的用户firstName", function () { var jsonData = pm.response.json(); const targetUser = jsonData.find(item => item.id === 1); pm.expect(targetUser.firstName).to.eql('UserOne'); });
补充说明
json-server会将db.json的顶层键作为独立接口路由,访问对应路由时直接返回该键对应的值,不会保留外层结构。如果你需要获取包含users和subjects的完整结构,可以请求根地址http://localhost:3000,此时你原本的jsonData.users[0].firstName写法可正常运行。
内容的提问来源于stack exchange,提问作者sarthok
相关产品推荐
相关产品推荐

