json.stringify()是标准、安全、最常用的方法,可将对象转为json字符串;支持replacer和space参数定制输出,但需注意date、undefined、函数、symbol、循环引用和bigint等特殊值的处理。

用 JSON.stringify() 就行,这是标准、安全、最常用的方法。
基本用法:直接转换对象
只要对象的属性值是 JSON 支持的类型(字符串、数字、布尔、null、数组、其他普通对象),就能直接转:
-
JSON.stringify({ name: "张三", age: 25 })→'{"name":"张三","age":25}' - 注意:结果是字符串,不是对象;原始对象不会被修改
处理特殊值:过滤或格式化输出
默认情况下,undefined、函数、Symbol 和循环引用会出问题。可通过参数控制:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 第二个参数是 替换器(replacer):可以是数组(指定保留哪些键),也可以是函数(自定义每个值的处理逻辑)
例:JSON.stringify(obj, ["name", "score"])只保留这两个字段 - 第三个参数是 空格数:让输出更易读,比如
JSON.stringify(obj, null, 2)会自动缩进
避开常见坑
这些情况容易报错或丢失数据,需要提前留意:
-
Date 对象:直接转出来是空对象
{},建议先转成字符串:date.toISOString() -
undefined / 函数 / Symbol:会被忽略(在对象中)或变成
null(在数组中) -
循环引用:会抛
TypeError,需手动处理(比如用库如flatted,或自己加标记跳过) - BigInt 类型:原生不支持,会报错,要转成字符串或 number 再处理
简单封装一个健壮的转换函数(可选)
如果项目里常遇到 Date、BigInt 或不确定结构的数据,可以封装一层:
- 用 replacer 函数统一处理 Date → ISO 字符串,BigInt → 转 string 或抛提示
- 加 try...catch 防止意外报错导致流程中断
- 例如:
JSON.stringify(obj, (k, v) => v instanceof Date ? v.toISOString() : typeof v === 'bigint' ? v.toString() : v)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










