JavaScript 词条目录
前端Wiki/词条/JSON 与序列化

JSON 与序列化

定义以文本格式存储与交换结构化数据的轻量标准,也是 JS 内置对象

JSON(JavaScript Object Notation)本质是「文本」:跨语言、可读、可网络传输。几乎全站的接口通信(fetch 请求与响应)与本地持久化用的都是它。JS 提供 JSON.stringify(对象 → 文本)与 JSON.parse(文本 → 对象)两个核心方法。

序列化的世界并不等价于 JS 的世界:undefined、函数、Symbol 键/值会被忽略;Date 序列化成 ISO 字符串、正则变成空对象、循环引用直接抛错。理解这些差异能少踩一半「存进去取出来变了」的坑;需要传输函数或日期时,传输前自行转换。

JavaScript
const u = { name: 'x', age: 3, born: new Date(), say: () => 1 };

JSON.stringify(u);
// {"name":"x","age":3,"born":"2026-10-31T00:00:00.000Z"}  —— say 丢失

// reviver 把字符串日期「复活」
const rev = JSON.parse(text, (k, v) =>
  k === 'born' && typeof v === 'string' ? new Date(v) : v);

// 美化输出(第二个参数是 replacer,null 表示不过滤)
JSON.stringify({ a: 1 }, null, 2);

// 安全解析:先判字符串再 parse,避免 throw 中断逻辑
function safeParse(s, fallback = null) {
  try { return JSON.parse(s); } catch { return fallback; }
}
⚠ 常见误区
🔗 相关词条类型转换fetch 网络请求对象基础
← 返回来源章节类型转换