在做网页开发或者处理数据的时候,经常会遇到一种叫 ref="/tag/2023/" style="color:#3D6345;font-weight:bold;">JSON 的格式。比如从服务器拿回来一段数据,长得像这样:'{"name": "小明", "age": 20}'。这时候你想把它变成 JavaScript 里能直接操作的对象,就得用到 JSON.parse。
JSON.parse 是干什么的?
简单说,JSON.parse 就是把一个符合 JSON 格式的字符串,转换成对应的 JavaScript 对象或值。它就像是个翻译官,把“文本”翻译成“程序能看懂的数据”。
基本语法长什么样?
它的写法很简单:
JSON.parse(text)
其中 text 就是你那个 JSON 字符串。
来个实际例子
假设你从后台接口拿到一段用户信息:
const str = '{"name": "张三", "age": 25, "city": "北京"}';
const user = JSON.parse(str);
console.log(user.name); // 输出:张三
console.log(user.age); // 输出:25
你看,原本只是一个字符串,经过 JSON.parse 之后,就能像普通对象一样访问属性了。
支持哪些类型?
不只是对象,数组也行。比如你收到的是一个列表:
const listStr = '["苹果", "香蕉", "橙子"]';
const fruits = JSON.parse(listStr);
console.log(fruits[0]); // 输出:苹果
数字、布尔值甚至 null 都可以被正确解析:
JSON.parse('123'); // 返回数字 123
JSON.parse('true'); // 返回布尔值 true
JSON.parse('null'); // 返回 null
需要注意的地方
不是所有字符串都能 parse。如果格式不对,程序就会报错。比如少了个引号:
JSON.parse('{name: "test"}'); // 报错!key 必须用双引号
正确的写法必须是双引号包裹 key 和字符串值:
JSON.parse('{"name": "test"}'); // 正确
还有,函数和 undefined 是不能放在 JSON 里的,因为它们不属于标准 JSON 支持的类型。
配合 try-catch 更安全
实际开发中,数据来源不一定靠谱,最好加个异常捕获:
let data;
try {
data = JSON.parse(responseString);
} catch (e) {
console.error('解析失败:', e);
data = {};
}
这样就算数据出问题,也不会让整个页面崩溃。
常见使用场景
你在用 fetch 或 axios 请求数据时,后端返回的往往是 JSON 字符串。虽然大多数库会自动帮你转成对象,但有时候你接收到的是原始文本,就得自己动手 parse 一下。
另外,本地存储也有用武之地。比如把对象存进 localStorage 之前要先转成字符串(用 JSON.stringify),取出来的时候再用 JSON.parse 变回去。
// 存的时候
localStorage.setItem('user', JSON.stringify({name: '李四'}));
// 取的时候
const user = JSON.parse(localStorage.getItem('user'));
console.log(user.name); // 李四