通过replacer和reviver函数可实现JSON的高级处理,如过滤敏感字段、序列化函数与循环引用、恢复Date类型及支持Map/Set结构。

在JavaScript中,JSON(JavaScript Object Notation)是最常用的序列化格式之一。虽然JSON.stringify()和JSON.parse()已经能满足大部分基础需求,但在实际开发中,面对复杂数据结构或特殊类型时,需要更高级的处理技巧。
默认情况下,JSON.stringify()无法处理函数、undefined、Symbol等值,还会忽略对象中的循环引用。通过传入replacer参数,可以精细控制序列化过程。
replacer可以是一个函数或数组。作为函数时,它会在每个键值对被序列化前调用:
const user = { name: 'Alice', age: 30, secret: 'password123', sayHi: function() { console.log('Hi'); }, meta: undefined }; const json = JSON.stringify(user, (key, value) => { if (key === 'secret') return undefined; // 过滤敏感字段 if (typeof value === 'function') return '[Function]'; // 标记函数 return value; }); console.log(json); // {"name":"Alice","age":30,"sayHi":"[Function]"}JSON.parse()的第二个参数是reviver函数,可用于在反序列化过程中转换数据,比如将字符串日期自动转为Date对象。
立即学习“Java免费学习笔记(深入)”;
开店星基于Yii2+Vue2.0+uniapp 前沿技术研发,易学易用,前后端分离,多端开发,负载均衡,性能优越架构稳定;商城商品、订单、用户精细化管理;涵盖秒杀、消费奖励、超.级海报等基础营销插件;H5+小程序+公众号,全渠道覆盖,框架成熟稳定便于扩展,高效二开,低成本快速搭建个性化商城。 演示站地址: 账号:admin 密码:admin移动页面展示
0
当对象存在循环引用时,直接使用JSON.stringify()会抛出错误。可以通过replacer配合WeakSet记录已访问对象,跳过重复引用。
原生JSON不支持Map、Set等结构。可通过replacer将其转为普通对象,再用reviver还原。
基本上就这些。掌握replacer和reviver的灵活使用,能有效应对大多数JSON处理难题,包括过滤字段、类型恢复、循环引用和扩展数据结构支持。关键是理解它们的执行机制,并结合实际场景设计转换逻辑。
以上就是JavaScript序列化_JSON高级处理技术的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号