JavaScript中安全处理JSON需用try...catch包裹JSON.parse()并利用reviver转换日期,JSON.stringify()会忽略undefined/函数/Symbol且不支持循环引用,须手动处理ISO日期、过滤循环引用及编码问题。

JavaScript 中解析和操作 JSON 数据主要靠 JSON.parse() 和 JSON.stringify(),但实际使用中容易踩坑——比如日期变字符串、函数丢失、循环引用报错、特殊字符处理异常等。
如何安全解析 JSON 字符串
用 JSON.parse() 解析字符串时,必须确保输入是合法 JSON 格式(双引号键名、无尾逗号、无注释、无 undefined 或函数)。非法格式会直接抛出 SyntaxError。
- 始终用 try...catch 包裹解析逻辑,避免崩溃
- 可传入第二个参数 reviver 函数 在解析过程中转换值,例如把 ISO 字符串转为 Date 对象
-
浏览器环境可配合
response.json()(fetch API)自动解析,但后端返回非 JSON 内容时仍需错误处理
如何正确序列化 JS 对象为 JSON
JSON.stringify() 会忽略 undefined、函数、Symbol 类型的属性,且不能处理循环引用对象(会报 TypeError: Converting circular structure to JSON)。
- 若需保留日期,先手动转成 ISO 字符串:
obj.date = obj.date.toISOString() - 处理循环引用:可用自定义 replacer 过滤掉引用字段,或借助库如
flatted或cycle - 需要缩进美化输出时,第三个参数支持数字(空格数)或字符串(如
" ")
常见 JSON 序列化/解析问题汇总
以下问题高频出现,且容易被忽视:
标签: javascript java js json 编码 浏览器 app 工具 后端
还木有评论哦,快来抢沙发吧~