gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:56:14 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/7759200/

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