gpt4 book ai didi

javascript - 有没有可能让 JSON.stringify 保留功能?

转载 作者:搜寻专家 更新时间:2023-11-01 00:05:55 24 4
gpt4 key购买 nike

拿这个对象:

x = {
"key1": "xxx",
"key2": function(){return this.key1}
}

如果我这样做:

y = JSON.parse( JSON.stringify(x) );

然后 y 将返回 { "key1": "xxx"} 。有什么可以通过 stringify 传递函数的吗?使用“ye goode olde eval()”可以创建带有附加函数的对象,但是打包它有什么用呢?

最佳答案

json-stringify-function是与此类似的帖子。

通过该帖子发现的片段可能对遇到此答案的任何人都有用。它通过使用 replacer 来工作JSON.stringify 和 reviver 中的参数JSON.parse 中的参数。

更具体地说,当一个值恰好是函数类型时,.toString() 会通过 replacer 调用它。当需要解析时,当函数以字符串形式存在时,eval() 将通过 reviver 执行。

var JSONfn;
if (!JSONfn) {
JSONfn = {};
}

(function () {
JSONfn.stringify = function(obj) {
return JSON.stringify(obj,function(key, value){
return (typeof value === 'function' ) ? value.toString() : value;
});
}

JSONfn.parse = function(str) {
return JSON.parse(str,function(key, value){
if(typeof value != 'string') return value;
return ( value.substring(0,8) == 'function') ? eval('('+value+')') : value;
});
}
}());

取自 Vadim Kiryukhin 的代码片段 JSONfn.js或在 Home Page 查看文档

关于javascript - 有没有可能让 JSON.stringify 保留功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com