必须用 try-catch 包裹 json.parse() 防止解析失败中断脚本;响应字符串需先解析为对象才能安全取值,不可跳过解析直接访问属性;fetch 优先用 response.json() 但同样需捕获异常。

直接用 JSON.parse() 把响应字符串转成可操作的 JavaScript 对象,但必须配合 try-catch 防止解析失败导致脚本中断。
确认数据是字符串再解析
后端返回的 JSON 数据在 JavaScript 中初始类型一定是字符串(比如 fetch 的 response.text() 或 xhr.responseText)。不能直接对未解析的字符串用点语法取值,必须先转换。
- ✅ 正确:接收后先调用
JSON.parse(str) - ❌ 错误:跳过解析,直接写
res.name(此时res是字符串,会报错或返回undefined)
用 try-catch 捕获解析异常
哪怕后端声称返回标准 JSON,网络传输、编码问题、调试时手动改包都可能导致格式非法。不加防护容易静默崩溃。
- 常见错误:单引号代替双引号、键名没引号、末尾逗号、注释、undefined 值
- 示例写法:
try {<br> const data = JSON.parse(responseText);<br> console.log(data.name); // 安全访问<br>} catch (err) {<br> console.error('JSON 解析失败:', err.message);<br> // 可降级处理,如显示错误提示或默认数据<br>}
现代 API 已内置解析,优先用 response.json()
使用 fetch 时,推荐直接调用 response.json(),它内部已封装解析逻辑并自动抛出格式错误:
fetch('/api/user').then(res => res.json()).then(data => console.log(data))- 它仍可能失败(比如响应不是 JSON 类型、内容为空、格式错误),所以
.catch()依然必要 - 注意:
response.json()返回 Promise,不可与JSON.parse()混用
解析后按原生对象/数组方式操作
成功解析后得到的就是标准 JS 值(对象、数组等),无需额外库即可使用:
- 取值:
data.user.name、data.items[0].id - 遍历:
data.list.forEach(item => {...})、for (const item of data.results) {...} - 安全访问嵌套属性建议用可选链:
data?.profile?.avatar - 注意 null/undefined:如果后端字段可能为空,避免直接链式调用未校验的层级
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











