JSON.stringify()导致数据中的function丢失

文章讨论了在项目中,如何处理复杂结构数据的转换,特别是当对象或数组包含function键时,JSON.stringify会丢失这些函数。作者提出使用eval配合JSON.parse进行深拷贝,提供了一个封装的方法来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中针对一些复杂结构的对象、数组等深层次数据进行数据转换<对象转字符串>的过程中<JSON.stringify()>,我们会发现如果在对象或者数组中设置一些function的键sh值对,当转换以后,该方法就会丢失,如下:

var obj = {
    name:'骚饼',
    age:'3',
    fn:function(){
        console.log(this.name + this.age)
    }
}
obj;

上述代码执行以后可以看到如下结果

但是如果当我们使用JSON.parse(JSON.stringify()) 实现深拷贝以后,会发现fn方法丢失

这时候我们可以使用eval进行数据的转换处理,封装了如下方法,大家可以复制到项目进行使用

//更正:形参key修改
function JSONParse(str) {
  return JSON.parse(str, (k, v) => {
    if (typeof v === 'string' && v.indexOf && v.indexOf('h =>') > -1) return eval(`(() =>{return ${v}})()`)
    return v
  })
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值