如何解决JavaScript读取JSON单个值时出现undefined的错误
问题排查
错误原因
你触发报错的核心原因是对JSON解析后的对象层级和类型认知错误:
- 顶层对象的
rows属性是数组类型,不是普通对象,数组元素需要通过数字下标访问,不能直接用属性名取数组成员里的字段 - 你注释掉的那行写法也存在逻辑错误:
columns和rows是顶层对象下平级的两个属性,columns数组下不存在rows字段
修复方案
你要读取第一个rows元素里的width值,修改报错行代码为:
console.log(obj["rows"][0]["data"]["width"] + "\n");
如果需要遍历所有rows里的width,可以用循环写法:
obj.rows.forEach(item => { // 可选链写法避免某条rows没有data属性时报错 console.log(item.data?.width) })
额外优化建议
你写的递归打印函数存在边界问题,如果遇到null值会报错(因为null instanceof Object返回true),可以调整判断逻辑:
function printValues(obj) { // 先排除null和非对象类型 if(typeof obj !== 'object' || obj === null) { console.log(obj + "\n") return } for(var k in obj) { printValues(obj[k]); } };
内容的提问来源于stack exchange,提问作者user1724708
相关产品推荐
相关产品推荐

