在日常写网页的时候,经常需要把 JavaScript 里的数据传给后端,或者存到本地。这时候,JS 对象直接扔过去是不行的,得先转成字符串格式——也就是大家常说的 JSON。
什么是 JS 对象转 JSON?
JavaScript 对象是代码里常见的数据结构,比如用户信息、配置项、表单数据等。而 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,本质就是字符串。要把对象传给服务器或存进 localStorage,就得把它变成 JSON 字符串。
这个转换过程,在 JS 里有一个现成的方法:JSON.stringify()。
基本用法很简单
假设有这样一个对象:
const user = {
name: "张三",
age: 28,
city: "杭州"
};
const jsonStr = JSON.stringify(user);
console.log(jsonStr); // {"name":"张三","age":28,"city":"杭州"}输出的结果是一个标准的 JSON 字符串,可以直接发给接口或者写入文件。
处理复杂情况
有时候对象里有些字段不想传,或者要过滤掉函数、undefined 这类无法序列化的值。可以用 stringify 的第二个参数做筛选。
const data = {
name: "李四",
type: "admin",
password: "123456",
log: function() { console.log("记录"); }
};
// 只保留 name 和 type
const jsonStr = JSON.stringify(data, ['name', 'type']);
console.log(jsonStr); // {"name":"李四","type":"admin"}也可以传一个函数来自定义处理逻辑:
const jsonStr = JSON.stringify(data, (key, value) => {
if (key === 'password') return undefined; // 过滤密码
return value;
});这样生成的字符串里就不会包含敏感字段了。
美化输出格式
调试时如果想让 JSON 字符串更易读,可以用第三个参数控制缩进。
const pretty = JSON.stringify(user, null, 2);
console.log(pretty);
// 输出带缩进的格式,方便查看
// {
// "name": "张三",
// "age": 28,
// "city": "杭州"
// }这种格式适合打印日志或导出配置文件。
反过来:JSON 转回对象
拿到 JSON 字符串后,要用 JSON.parse() 变回 JS 对象。
const obj = JSON.parse(jsonStr);
console.log(obj.name); // 张三注意,传进去的必须是合法的 JSON,否则会报错。比如单引号、末尾多逗号这些都不行。
实际开发中,前后端交互、配置存储、跨页面传数据,几乎天天都会遇到对象和 JSON 的来回转换。掌握好这两个方法,能少踩很多坑。