JSON.parse()是标准、安全、最常用的方法;可直接解析合法JSON字符串为JS对象,需用try...catch处理异常,并支持reviver函数预处理数据,禁用eval等不安全方式。

用 JSON.parse() 就行,这是标准、安全、最常用的方法。
基本用法:直接解析字符串
只要 JSON 字符串格式正确,调用 JSON.parse() 就能转成 JavaScript 对象(或数组):
const jsonStr = '{"name": "张三", "age": 25, "isStudent": false}';
const obj = JSON.parse(jsonStr);
console.log(obj.name); // "张三"
console.log(typeof obj); // "object"
注意处理异常:避免崩溃
如果字符串不是合法 JSON(比如多了逗号、用了单引号、字段名没加引号),JSON.parse() 会直接抛错。建议用 try...catch 包裹:
- 捕获语法错误,防止程序中断
- 可返回默认值或提示用户输入有误
function safeParse(jsonStr) {
try {
return JSON.parse(jsonStr);
} catch (e) {
console.error('JSON 解析失败:', e.message);
return null;
}
}
safeParse('{"name": "李四", "age":}'); // 报错,返回 null
进阶技巧:解析时做数据预处理
JSON.parse() 支持第二个参数 reviver 函数,可在解析过程中修改每个键值对:
立即学习“Java免费学习笔记(深入)”;
- 把时间字符串自动转成
Date对象 - 过滤掉敏感字段(如
password) - 统一转换数字字符串为数值类型
const jsonStr = '{"created": "2024-05-10T08:00:00Z", "count": "123"}';
const obj = JSON.parse(jsonStr, (key, value) => {
if (key === 'created') return new Date(value);
if (key === 'count') return Number(value);
return value;
});
常见错误提醒
这些写法容易出问题,要避开:
- 用
eval()或Function构造函数解析 —— 有严重安全风险,可能执行恶意代码 - 把带单引号的字符串当 JSON(JSON 标准只认双引号):
{"name": '张三'}是非法的 - 末尾多逗号:
{"a": 1, "b": 2,}在严格 JSON 中不被允许


















