JavaScript解析JSON需先用JSON.parse()转为对象或数组,再用可选链(?.)、空值合并(??)或逻辑与(&&)安全访问嵌套属性,遍历混合结构时结合map、Object.keys等方法,并通过递归或类型判断处理动态键名。
JavaScript解析JSON数据很简单,关键在于理解数据结构和正确访问嵌套属性。JSON本质是字符串,必须先用 JSON.parse() 转成对象或数组,才能安全读取。
后端返回的JSON通常是字符串格式,不能直接点属性访问:
JSON.parse(jsonString) 将字符串转为JS对象或数组try...catch 包裹data.user.name,先确认 data 是对象且有 user 属性深层嵌套(如 response.data.items[0].author.profile.avatar.url)容易因某一层缺失而报错:
?.
): data?.items?.[0]?.author?.profile?.avatar?.url
??)提供默认值:user?.name ?? '匿名用户'
&&)短路判断:data && data.items && data.items[0] && ...,但较冗长真实API返回常是“对象里包数组,数组里又含对象”的组合:
console.log(data) 或浏览器开发者工具查看实际层级map/forEach,对对象用 Object.keys() 或 for...in(注意原型链)id 字段:function findAllIds(obj) { let ids = []; if (obj?.id) ids.push(obj.id); if (Array.isArray(obj)) obj.forEach(item => ids.push(...findAllIds(item))); if (obj && typeof obj === 'object') Object.values(obj).forEach(val => ids.push(...findAllIds(val))); return ids; }
有些接口返回字段名不固定(如按日期命名的键、多语言字段),或结构随状态变化:
Object.keys(obj) 或 Object.entries(obj) 动态获取键名typeof 和 Array.isArray() 判断类型,再分支处理in 操作符检查关键字段是否存在,提升健壮性