网站JavaScript中JSON.parse语法错误排查求助
搞定JSON.parse语法错误的常见思路
Hey there! 作为天天跟JSON打交道的开发者,我太懂新手遇到JSON.parse报错时的崩溃感了😅 别着急,咱们一步步捋清楚最常见的几个坑,你可以对照着排查:
JSON格式本身不符合规范
JSON的规则比JavaScript对象严格多了,新手最容易踩这几个点:- 属性名必须用双引号包裹,单引号或者不加引号都不行:
❌ 错误写法:{'name': 'Alice'}或者{name: 'Alice'}
✅ 正确写法:{"name": "Alice"} - 最后一个属性后面不能加逗号(trailing comma):
❌ 错误写法:{"name": "Alice", "age": 30,}
✅ 正确写法:{"name": "Alice", "age": 30} - 字符串里的特殊字符要转义:比如双引号、反斜杠,得加
\转义:
❌ 错误写法:{"desc": "She said "Hi!" to me"}
✅ 正确写法:{"desc": "She said \"Hi!\" to me"}
- 属性名必须用双引号包裹,单引号或者不加引号都不行:
传入的不是有效的JSON字符串
JSON.parse()只能接收字符串,如果传了对象、undefined、null或者其他类型,直接就会报错。比如你不小心写了JSON.parse(userObject)而不是JSON.parse(JSON.stringify(userObject)),肯定炸。另外还要注意:如果是后端接口返回的数据,说不定返回的不是JSON(比如返回了404的HTML页面),这时候你把HTML字符串传给parse,自然会报错。隐藏的特殊字符或编码问题
有时候你复制的JSON字符串里会有看不见的特殊字符(比如BOM头\uFEFF),或者编码不对,这时候parse也会失败。可以先把字符串打印到控制台,看看有没有奇怪的字符,或者用jsonString.replace(/^\uFEFF/, '')去掉BOM头再试试。
新手调试小技巧
给你个实用的调试代码,用try-catch包裹parse,能直接看到具体错误信息和出问题的字符串:
const yourJsonString = "这里放你要解析的字符串"; try { const parsedData = JSON.parse(yourJsonString); console.log("解析成功:", parsedData); } catch (error) { console.error("解析错误原因:", error.message); console.error("出问题的原始字符串:", yourJsonString); }
错误信息会告诉你具体哪里错了,比如Unexpected token ' in JSON at position 1,直接就能定位是单引号的问题。
慢慢来,新手遇到这种问题太正常了,排查几次就熟练啦!
内容的提问来源于stack exchange,提问作者T.P
相关产品推荐
相关产品推荐

