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

标签 javascript json object

拿走这个元素:

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/

相关文章:

java - 使用具有浮点值的对象对集合进行排序

javascript - 如何从多个图像访问多个 alt 属性值?

JavaScript 对象函数

javascript - 将事件处理程序/ Prop 添加到 React 中的内部标记

javascript - 从网络应用程序访问 Chrome 扩展程序

javascript - Firebase JSON 数据组成数组

java - 解析 JSON 并转换为对象列表

javascript - 获取变量并从0开始计数

javascript - JavaScript 中的意外参数值

json - Azure ARM JSON 模板 - 将 VM 添加到不同资源组中的恢复服务保管库