Agent Skills
返回列表
SuperJSON 序列化助手

SuperJSON 序列化助手

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/tx20268316 技能。

技能介绍

要解决的问题

当你把带日期的筛选条件存进 localStorage,或通过 Worker.postMessage 传递复杂对象时,标准 JSON.stringify 会把 Date 变成字符串、把 Set 变成普通数组。下次读取时,instanceof Date 直接返回 false,前端可能因类型错误触发异常;在 Next.js 等 SSR 场景中,脱水后的数据水合时同样会丢失原始类型,导致客户端和服务端渲染结果不一致。

核心能力与使用步骤

该技能基于 superjson 解决JSON 类型失真问题:

  • 类型完整保留:序列化 Date、Map、Set 等复杂类型,还原后仍为原实例,可通过 instanceof 自测验证。
  • 无缝替换:API 设计近似 JSON.stringify / JSON.parse,只需将缓存写入、跨线程传参处的原生方法替换为 SuperJSON.stringify / SuperJSON.parse。
  • 自测验证:重点测试 Date、Set 等类型的往返结果,确保类型未被破坏。
  • 标准 JSON 对接:若后端接口只接收标准 JSON,需单独编写 DTO 映射层,先将 Date 转为 ISO 字符串再传输,避免直接传递元数据。

适用边界与注意事项

  • 安全红线:切勿将密钥、Token 等敏感信息明文塞进序列化结果,防止通过导出数据泄露。
  • 存储限制:超大对象仍受 localStorage 等存储配额约束,需提前评估体积。
  • 数据裁剪:循环引用的大图或组件实例(如 Vue/React 组件)需先处理循环引用,否则序列化会报错。
  • 规范差异:与 YAML/XML 互转工具不同,本技能专注于解决 JSON 本身的类型问题,而非格式转换。

使用场景

  • 前端需要在 localStorage 中缓存带日期范围的筛选条件,并在刷新后恢复为 Date 实例
  • Web Worker 通过 postMessage 向主线程传递 Set 或 Map 结构的复杂数据
  • Next.js 服务端渲染时需要对含 Date 的组件状态进行脱水与客户端水合
  • 后端接口仅支持标准 JSON,前端需将 SuperJSON 还原出的 Date 转 ISO 后提交

适合人员

  • 做 localStorage 状态持久化的前端工程师,需要保留筛选条件的 Date 类型
  • 实现 Web Worker 通信的开发者,要在线程间传递复杂对象而不丢失类型
  • 使用 Next.js 的全栈工程师,关注服务端脱水与客户端水合的类型一致性
  • 对接严格 JSON 接口的开发者,需要制定 DTO 映射与类型转换方案