json.stringify()可将javascript对象转为json字符串,支持replacer筛选字段和space美化输出,但会忽略函数、undefined、symbol等不可序列化值,并对循环引用、bigint等抛错。

用 JSON.stringify() 方法就能把 JavaScript 对象转成 JSON 字符串。
基础用法:直接转换对象
最简单的情况,传入一个普通对象即可:
const obj = { name: "张三", age: 25, isActive: true };
const jsonStr = JSON.stringify(obj);
// 结果:'{"name":"张三","age":25,"isActive":true}'
注意:只有可序列化的属性会被保留(如字符串、数字、布尔值、null、数组、嵌套对象),函数、undefined、Symbol、Date 实例等默认会被忽略。
处理不可序列化值:使用 replacer 参数
第二个参数 replacer 可以是数组或函数,用于筛选或修改要序列化的字段:
- 数组形式:只保留指定键名的属性
- 函数形式:对每个键值对做自定义处理(返回值决定是否保留及如何表示)
例如过滤掉敏感字段:
const user = { name: "李四", password: "123456", email: "lisi@example.com" };
const safeStr = JSON.stringify(user, ["name", "email"]);
// 结果:'{"name":"李四","email":"lisi@example.com"}'
美化输出:添加空格和缩进
第三个参数 space 控制格式化效果,方便阅读或调试:
- 传入数字(如
2):每级缩进 2 个空格 - 传入字符串(如
"--"):用该字符串作为缩进
const data = { a: 1, b: { c: 2 } };
console.log(JSON.stringify(data, null, 2));
// 输出:
// {
// "a": 1,
// "b": {
// "c": 2
// }
// }
常见坑点提醒
以下情况会出错或产生意外结果:
- 对象含循环引用(如
a.b = a)→ 抛出TypeError - 值为
undefined、function、Symbol→ 在对象中被跳过;在数组中变成null -
Date对象 → 自动调用toISOString(),变成 ISO 字符串 -
BigInt→ 直接报错,需手动处理(如用 replacer 转为字符串)
遇到这些情况,需要提前清洗数据或自定义 replacer 函数处理。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











