JavaScript 解析 JSON 主要用 JSON.parse(),需确保输入为合法 JSON 字符串(键名双引号、无尾逗号、无注释、无 undefined/函数),并用 try…catch 捕获 SyntaxError 异常。

JavaScript 解析 JSON 主要用 JSON.parse(),它把符合 JSON 格式的字符串转成对应的 JavaScript 值(对象、数组、字符串、数字、布尔或 null)。用法简单,但出错很常见,关键在细节。
确保输入是合法的 JSON 字符串
JSON 格式比 JavaScript 对象字面量更严格:键名必须双引号包裹、不能有单引号或未加引号的键、不支持尾逗号、不支持注释、不能用 undefined 或函数。
- ✅ 正确:
'{"name": "张三", "age": 25}' - ❌ 错误:
"{name: '张三'}"(键没引号、值用单引号) - ❌ 错误:
'{"name": "李四",}'(末尾逗号) - ❌ 错误:
'{"count": undefined}'(undefined 不是合法 JSON 值)
必须用 try…catch 捕获解析异常
JSON.parse() 遇到非法格式会直接抛出 SyntaxError,不加错误处理会导致脚本中断。
- 推荐写法:
let data;
try {
data = JSON.parse(jsonString);
} catch (e) {
console.error('JSON 解析失败:', e.message);
data = null;
}
别依赖 typeof 或 === null 判断是否成功——失败时根本不会赋值。
立即学习“Java免费学习笔记(深入)”;
注意特殊字符和编码问题
如果 JSON 字符串来自网络请求或用户输入,可能含 Unicode 转义(如 "\u4f60\u597d")或 UTF-8 BOM。现代浏览器基本能正确处理,但需确保:
- 响应头
Content-Type包含charset=utf-8 - 服务端返回的字符串本身是有效 UTF-8 编码
- 避免手动拼接 JSON 字符串(易引入不可见控制字符)
若遇到乱码或解析失败,先用 console.log(JSON.stringify(jsonString)) 查看原始字符串内容。
可选:使用 reviver 函数做预处理
JSON.parse(str, reviver) 的第二个参数是可选函数,能在解析过程中修改每个键值对,适合转换日期字符串、过滤敏感字段等。
- 例如把 ISO 时间字符串自动转为 Date 对象:
const obj = JSON.parse('{"created": "2023-10-05T12:00:00Z"}', (key, value) => {
return key === 'created' && typeof value === 'string'
? new Date(value)
: value;
});
// obj.created 是 Date 实例
注意:reviver 会递归调用,包括嵌套对象和数组项;返回 undefined 会删除该属性。
基本上就这些。核心就两条:输进来的得是标准 JSON 字符串,调用时一定包 try…catch。不复杂但容易忽略。











